当我使用json.loads时,u是什么?

2024-05-18 09:08:57 发布

您现在位置:Python中文网/ 问答频道 /正文

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


Tags: 对象脚本noneapi信息jsonfoobar
2条回答

Unicode字符串。请参阅Python Tutorial

In Python source code, Unicode literals are written as strings prefixed with the ‘u’ or ‘U’ character: u'abcdefghijk'.

Unicode Literals in Python Source Code

这里的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的错误)

相关问题 更多 >