2012-02-08 8 views
18

私は、Soundcloud APIからJSON情報を解析するためのPythonスクリプトを作成していましたが、json.loads(val)を使用してJSON情報を格納する方法あなたなしのオブジェクトですか?json.loadsを使用するときの状態は何ですか?

すなわち、なぜ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

ありがとうございました!

+0

別の役に立つ記事:http://stackoverflow.com/questions/13940272/python-json-loads-returns-items-prefixing-with-u –

答えて

15

ユニコード文字列。 Python Tutorialを参照してください。

Pythonソースコードでは、Unicodeリテラルは、 'u'または 'U'文字を前に付けた文字列:u'abcdefghijk 'で記述されます。

から​​

7

u' sがUnicode文字列を作成することになっていることを示すためにあります。

json.dumpは、文字列をユニコード文字列に変換し、それを実行したことの痕跡を残さず、json.loadは変換できません。

PyYAMLを使用し、文字列オブジェクトに変換するには:

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

しかし、注意してください!あなたはjson.dumpは、オブジェクトの文字列とUnicode文字列を含むオブジェクトを編何らかの理由ならば(それが本当にjson.dumpのせいだが)、yamlは、オブジェクトの文字列として、すべてをロードします

関連する問題