当我使用 json.loads 时,你是啥? [复制]

Posted

技术标签:

【中文标题】当我使用 json.loads 时,你是啥? [复制]【英文标题】:What are the u's when I use json.loads? [duplicate]当我使用 json.loads 时,你是什么? [复制] 【发布时间】:2012-03-01 08:08:34 【问题描述】:

我一直在编写一个 Python 脚本来解析来自 Soundcloud API 的 JSON 信息,我只是想知道当我使用 json.loads(val) 时“u”是什么以及如何将 JSON 信息存储到没有 u 的对象?

即为什么会有你:

>>> json.loads('["foo", "bar":["baz", null, 1.0, 2]]')
[u'foo', u'bar': [u'baz', None, 1.0, 2]]

请参阅此处的“解码 JSON”部分以进一步了解我的意思:

http://docs.python.org/library/json.html

【问题讨论】:

另一个有用的帖子:***.com/questions/13940272/… 【参考方案1】:

Unicode 字符串。请参阅Python Tutorial。

在 Python 源代码中,Unicode 文字被编写为前缀为“u”或“U”字符的字符串:u'abcdefghijk'。

——Unicode Literals in Python Source Code

【讨论】:

【参考方案2】:

u's 表示应该创建一个 Unicode 字符串。

json.dump 将字符串转换为 unicode 字符串并且没有留下任何痕迹,因为 json.load 无法转换回来,这很糟糕。

要转换为字符串对象,请使用PyYAML:

>>> import yaml
>>> yaml.load('["foo", "bar":["baz", null, 1.0, 2]]')
>>> ['foo', 'bar': ['baz', None, 1.0, 2]]

但要小心!如果由于某种原因您json.dumped 包含对象字符串和 unicode 字符串的对象,yaml 会将所有内容作为对象字符串加载(尽管这确实是json.dump 的错)

【讨论】:

以上是关于当我使用 json.loads 时,你是啥? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

在 python 中处理 json.loads() 值错误

JSONDecodeError,在 Django 中使用 json.loads 时

python爬虫的一个问题,json.loads()不式转化字符串为dict类型吗?

在 python 中使用 bson.json_util.loads 时如何忽略时区?

通过 json.loads 将 Python dict 转为 JSON:

如何在Python中将json.loads作为列表而不是字典[重复]