0

JSONオブジェクトからこれを取り戻す:

ここで呼び出しが行われます。

response = make_request(GET_QUALIFIED_OFFERS_URL, request)

def make_request(url, json_data):
    host = url
    req = urllib2.Request(host, json_data, {'content-type': 'application/json'})
    response_stream = urllib2.urlopen(req)

    return response_stream.read()

response = {"Violations":[],"Messages":[],"Log":[],"Session":{"SessionId":813982132},"W3iDeviceId":294294043,"IsAfppOfferwallEnabled":true}, skipkeys=True, ensure_ascii=False, sort_keys=True, indent=4}

print json.dumps((response), sort_keys=True, indent=4)

エラーの発生:

print json.dumps({"Violations":[],"Messages":[],"Log":[],"Session":{"SessionId":813982132},"W3iDeviceId":294294043,"IsAfppOfferwallEnabled":true}, skipkeys=True, ensure_ascii=False, sort_keys=True, indent=4)
NameError: global name 'true' is not defined

JSONの一部が正しくないようです。値「true」を引用符で囲みます。これで機能します。では、すべての値を引用符で囲む方法はありますか?

これは動作します:

response = {"Violations":[],"Messages":[],"Log":[],"Session":{"SessionId":813982132},"W3iDeviceId":294294043,"IsAfppOfferwallEnabled":"true"}, skipkeys=True, ensure_ascii=False, sort_keys=True, indent=4}

問題は、このようなJSONがいたるところにあり、falseやtrueのような値があり、巨大なキー値データセットに引用符がないことです。

私がやろうとしているのは、JSonを取得して、それと比較できるようにすることです。Jsonに何が戻ってくるかをテストするための自動化フレームワークを作成しようとしています。理想的には、csv出力のように作成したいと思います。たぶん、各キーの列があり、次に各値の行があります。他にこのようなことをしている人はいますか?

4

2 に答える 2

7

Pythonでは、キーワードはTrueであり、ではありませんtrue。大文字と小文字の区別が重要です。dumpsとの両方の使用例としてloads

>>> from json import dumps, loads
>>>
>>> d1 = {'key1': 'val1', 'key2': True, 'key3': False}
>>> s1 = dumps(d1)
>>> d2 = loads(s1)
>>> d1
{'key3': False, 'key2': True, 'key1': 'val1'}
>>> s1
'{"key3": false, "key2": true, "key1": "val1"}'
>>> d2
{u'key3': False, u'key2': True, u'key1': u'val1'}
于 2012-08-15T21:47:02.567 に答える
4

純粋な JSON 文字列を記述することと、Python データ構造を JSON 文字列に変換することには違いがあります。

PythonJSON{En,De}coderは、デフォルトで次の変換を実行します。

JSON            Python

object          dict
array           list
string          unicode
number (int)    int, long
number (real)   float
true            True
false           False
null            None

したがって{'foo': True}、Python で記述すると、JSONEncoder は{'foo': true}JSON 標準に従って書き出します。

于 2012-08-16T19:55:40.317 に答える