我一直在编写一个Python脚本来解析Soundcloud API中的JSON信息,我只是想知道当我使用json.loads(val)时“u”是什么以及如何将JSON信息存储到没有你的物体?
即。为什么你会这样:
>>> 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
谢谢!
答案 0 :(得分:15)
Unicode字符串。请参阅Python Tutorial。
在Python源代码中,Unicode文字被编写为带有前缀为“u”或“U”字符的字符串:u'abcdefghijk'。
答案 1 :(得分:7)
u'
表示应该创建一个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.dump
编辑了一个包含对象字符串和unicode字符串的对象,yaml
会将所有内容作为对象字符串加载(尽管那个json.dump
的错误确实存在)