簡體   English   中英

將字符串處理為字典,反之亦然

[英]Manipulate String to Dictionary and viceversa

通過使用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)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'}這會導致不良結果,然后將此信息傳遞給其他實體。

問題是如何獲得與上述相同的格式?

您可以將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"
}
"""

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM