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 回答