使用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'...
”
检查content
obj: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'}
这样的格式会导致意外的结果,然后将这些信息传递给其他实体。
问题是如何获得与上述相同的格式?
答案 0 :(得分: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"
}
"""