在python中将字符串转换为json

use*_*079 0 python json python-2.7

json.loads('{"name": "Sam"}')
{u'name': u'Sam'}
Run Code Online (Sandbox Code Playgroud)

这应该不显示

{"name": "Sam"}

Python 2.7

有什么问题?

jua*_*aga 7

首先,你的标题背叛了一些混乱,它说"将字符串转换为JSON".您没有转换为JSON,而是将以JSON格式编码的字符串反序列化为Python对象.

其次,你问:

这应该不显示

{"name": "Sam"}

不,它不应该.那些意味着Python 2 str类型,它们是字节串.的JSON规范是很清楚的:

字符串是零个或多个Unicode字符的序列,用双引号括起来,使用反斜杠转义.

所以Python json解析器正确地返回unicode数据类型,在Python 2中,它将使用a预先修复它的表示u.请注意,它不是字符串的一部分,它是其表示的一部分.

请注意,在Python 3中(您可能应该使用它),str类型对应于Python 2 unicode类型,旧的字节字符串属于bytes该类.如果us真的打扰你,那么切换到Python 3 :)

所以,总之,没有问题.根据JSON标准,json字符串是unicode字符串,Python json解析器在Python 2中反序列化为unicode数据类型.这是预期的,可取的,记录良好的行为.