1

httplib2 を使用した http Post を通じて、ネットワーク リソースからいくつかの統計情報を取得します。

resp, content = http.request(statistics_url,
            method='POST',
            headers={'Content-Type': 'application/json', 'charset':'UTF-8','Connection':'keep-alive','Host':'theHost'},
            body=json_body)

「 」は、私が「 」respを受け取ったことを示しています{'content-type': 'application/json; charset=UTF-8'...

contentobjのタイプを確認しています:type(content)戻り値str

contentオブジェクトの形式は次のとおりです。

{ 
  "key" : "string value"
   ............
   "key" : int value
}

これを他のデータで拡張したいので、これをJsonオブジェクトに変換し、必要なデータを追加してから、そこから文字列を再度作成しようとします(さらに渡す必要があるため)

jdata = json.loads(s)
jdata['ip_address']="some ip address"

v1 = json.dumps(jdata)
v2 = ast.literal_eval(json.dumps(jdata))
v3 = ast.literal_eval(pprint.pformat(jdata)

v1,v2,v3オリジナルと同じ形式でディクショナリを返すものはありません。{'key' : 'value'} or {u'key' : u'value'}望ましくない結果につながるような形式を取得し、この情報を他のエンティティに渡します。

問題は、上記と同じフォーマットを取得する方法です。

4

1 に答える 1

0

indent名前付きパラメーターを数値に設定して、きれいに印刷された結果を得ることができます。バージョンはv1行く方法です:

import json

s = """
{
  "key1": "value1",
  "key2": 5
}
"""

jdata = json.loads(s)
jdata['ip_address']="1.2.3.4"

v1 = json.dumps(jdata, indent=2)
print(v1)

""" Prints
{
  "key1": "value1",
  "key2": 5,
  "ip_address": "1.2.3.4"
}
"""
于 2016-09-02T13:58:18.057 に答える