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
The u- prefix just means that you have a Unicode string. When you really use the string, it won't appear in your data. Don't be thrown by the printed output.
We can have duplicate keys in a JSON object, and it would still be valid. The validity of duplicate keys in JSON is an exception and not a rule, so this becomes a problem when it comes to actual implementations.
loads() takes in a string and returns a json object.
I've done some research and I understood that "duplicate" keys in JSON are legal, but different parsers act differently in handling this. How can I avoid the use of duplicate keys or, alternatively, make sure the schema validates the value for all duplicated keys? Hermann.
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
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.dump
ed an object containing object strings and unicode strings, yaml
will load everything as object strings (though that's json.dump
's fault really)
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With