我需要從一個網路服務回傳的部分字串中決議出json。我有以下代碼片段,它可以正常作業,但非常難看。有沒有更好或更干凈的方法來做這件事呢?
x = '"1":{"name": "item one", "code": "1"}, "2":{"name": "item two", "code" : "2"}, "3":{"name": "item three", "code" : "3"}' /span>
split = x.split('},')
index = 0
for s in split:
split[index] = '{' s '}'
index =1
joined = ','.join(split)
joined = '['/span> joined[:-1] '] '
j = json.load(join)
print(j)
這是結果:
[{'1'/span>: {'name': ' item one', 'code': '1'}}。
{'2'/span>: {'name'/span>: '專案二', '代碼': '2'}}。
{'3'/span>: {'name'/span>: '專案三', '代碼': '3'}}]。
uj5u.com熱心網友回復:
你可以使用下面的片段:
[dict([t]) for t in json. loads(f"{{{x}}").items()] 。]
[{'1'/span>: {'name'/span>: ' item one', 'code': '1'}}。
{'2'/span>: {'name'/span>: '專案二', '代碼': '2'}}。
{'3'/span>: {'name'/span>: '專案三', '代碼': '3'}}]。
uj5u.com熱心網友回復:
你可以用手來解決不一致的問題(添加缺少的大括號),并使用json模塊來決議:
data = json.load('{'/span> x '}')
然后你可以將決議后的資料轉換為所需的表現形式:
[{item[0]: item[1]}。for item in data.items() ]
#[{'1': {'name': 'item one', 'code': '1'}},
# {'2': {'name': 'item two', 'code': '2'}},
# {'3': {'name': 'item three', 'code': '3'}}]
否則,你將最終實作你自己的JSON決議器,這并不簡單。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/315099.html
標籤:
上一篇:洗掉換行符但僅在引號之間
