What are the u's when I use json.loads? [dupli

2019-02-04 06:38发布

This question already has an answer here:

I've been writing a Python script to parse JSON information from the Soundcloud API, and I was just wondering what the "u"'s are when I use json.loads( val ) and how to store the JSON information to an object without the u's?

i.e. why are there u's in this:

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

See the "Decoding JSON" section here to understand what I mean further:

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

Thank you!

2条回答
成全新的幸福
2楼-- · 2019-02-04 07:16

the u's are there to indicate that a Unicode string is supposed to be created.

It sucks that json.dump converts strings to unicode strings and leaves no trace of having done that, because then json.load can't convert back.

To convert to string objects, use PyYAML:

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

But careful! If for some reason you json.dumped an object containing object strings and unicode strings, yaml will load everything as object strings (though that's json.dump's fault really)

查看更多
手持菜刀,她持情操
3楼-- · 2019-02-04 07:39

Unicode strings. See the 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

查看更多
登录 后发表回答