当我使用json.loads时你有什么用?

时间:2012-02-08 20:34:09

标签: python json encode

我一直在编写一个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

谢谢!

2 个答案:

答案 0 :(得分:15)

Unicode字符串。请参阅Python Tutorial

  

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

     

- Unicode Literals in Python Source Code

答案 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的错误确实存在)