首页   注册   登录
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
推荐学习书目
Learn Python the Hard Way
Python 学习手册
Python Cookbook
Python 基础教程
Python Sites
PyPI - Python Package Index
http://www.simple-is-better.com/
http://diveintopython.org/toc/index.html
Pocoo
值得关注的项目
PyPy
Celery
Jinja2
Read the Docs
gevent
pyenv
virtualenv
Stackless Python
Beautiful Soup
结巴中文分词
Green Unicorn
Sentry
Shovel
Pyflakes
pytest
Python 编程
pep8 Checker
Styles
PEP 8
Google Python Style Guide
Code Style from The Hitchhiker's Guide
V2EX  ›  Python

python 解析服务器返回的 json 数据

  •  
  •   shoumu · 2014-05-11 12:47:30 +08:00 · 4069 次点击
    这是一个创建于 1987 天前的主题,其中的信息可能已经有所发展或是发生改变。
    服务器返回json数据中带有 'a': true 这样的条目,用python自带的json模块解析会出错
    raise ValueError("No JSON object could be decoded")
    ValueError: No JSON object could be decoded
    请问有什么方法解析呢
    11 回复  |  直到 2014-05-11 17:03:20 +08:00
        1
    ferock   2014-05-11 12:49:55 +08:00
    服务器的返回也太不规范了
        2
    yyfearth   2014-05-11 12:52:43 +08:00
    估计是用String拼出来的
        3
    yyfearth   2014-05-11 12:54:27 +08:00
    如果还算标准 可以尝试用 " 替换掉所有 '
    如果有没有引号的情况 那要用正则把key加上引号
    如果还不行 那么就没有办法了 估计只有js eval可以解析了
        4
    shoumu   2014-05-11 13:12:51 +08:00
    @yyfearth 在命令行中测试是可行的的
    >>> jsonStr = '{"a":true}'
    >>> a = json.loads(jsonStr)
    >>> a
    {u'a': True}
    但是一些到文件中,再读取出来就不行了
        5
    winkidney   2014-05-11 13:44:24 +08:00
    考虑是不是unicode问题?返回的jso是gbk还是utf-8?编码错误可能性比较大的感觉……
        6
    shoumu   2014-05-11 14:12:54 +08:00
    @winkidney 可能编码问题,我自己的那些数据是放在一个txt文件里。从同学那里拿了一个json文件,将txt文件里的数据复制到那个文件中,就能够正确解析了,很诡异。
    在sublime中显示我的txt编码为:UTF-8 with BOM,另一个json文件直接是UTF-8
        7
    polythene   2014-05-11 14:15:35 +08:00   ♥ 1
    @shoumu 不要加BOM,BOM会在前面插入3个额外字符,json库当然不认了
        8
    ericls   2014-05-11 14:28:10 +08:00   ♥ 1
    json.loads(foo,strict=False)
        9
    winkidney   2014-05-11 15:19:15 +08:00   ♥ 1
    @shoumu BOM会让python读取错误的,你去掉BOM,网上一大堆教程,随意一搜~
        10
    est   2014-05-11 15:38:04 +08:00   ♥ 1
    @shoumu 这么久还没人发现问题嘛。。我来回答好了。json标准禁止使用单引号。
        11
    shoumu   2014-05-11 17:03:20 +08:00
    @est 不好意思,问题中的 'a': true 我打错了,应该是双引号,应该是BOM的问题
    关于   ·   FAQ   ·   API   ·   我们的愿景   ·   广告投放   ·   感谢   ·   实用小工具   ·   952 人在线   最高记录 5043   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.3 · 22ms · UTC 19:24 · PVG 03:24 · LAX 12:24 · JFK 15:24
    ♥ Do have faith in what you're doing.