[英]Sorting objects and lists in nested JSON
我有這個 JSON:
{
"data": [
{
"Contact": {
"Name": "Name_of_the_shop"
},
"Date": "2022-01-01T11:11:13",
"DueDate": "2022-01-01T11:11:13",
"VAT": false,
"Items": [
{
"Code": "3",
"Description": "Sales",
"Quantity": 1,
"TaxAmount": 1,
"TaxType": "3",
"UnitAmount": 10
},
{
"AccountCode": "1",
"Description": "Discount",
"Quantity": 1,
"TaxAmount": -0.2,
"TaxType": "4",
"UnitAmount": -2
},
{
"AccountCode": "1",
"Description": "Discount",
"Quantity": 3,
"TaxAmount": 1.9,
"TaxType": "4",
"UnitAmount": -5
},
{
"Code": "3",
"Description": "Sales",
"Quantity": 2,
"TaxAmount": 1,
"TaxType": "3",
"UnitAmount": 8
}
],
"Payments": [],
"Reference": "Orders closed 1 Febuary 2022"
}
]
}
這段代碼提取所有鍵和值:
def get_keys_and_values(data, key_list, value_list):
for key, value in data.items():
key_list.append(key)
if not isinstance(value, list) and not isinstance(value, dict):
value_list.append([key, value])
if isinstance(value, dict):
get_keys_and_values(value, key_list, value_list)
elif isinstance(value, list):
for val in value:
get_keys_and_values(val, key_list, value_list)
return key_list, value_list
我想對此 JSON 中的所有字典和列表進行排序,因此 output(key_list 和 value_list)始終相同,即使 Z0ECD11C1D7A287401D148A23BBD7A2F8 中的順序會發生變化。 (我不想對 key_list 進行排序,而 value_list 必須在這里完成)。 我對 Python 比較陌生,我已經在這里停留了一段時間,我將不勝感激:)
預期輸出:
鍵列表:
['AccountCode', 'AccountCode', 'Code', 'Code', 'Contact', 'Date', 'Description', 'Description', 'Description', 'Description', 'DueDate', 'Items', 'Name', 'Payments', 'Quantity', 'Quantity', 'Quantity', 'Quantity', 'Reference', 'TaxAmount', 'TaxAmount', 'TaxAmount', 'TaxAmount', 'TaxType', 'TaxType', 'TaxType', 'TaxType', 'UnitAmount', 'UnitAmount', 'UnitAmount', 'UnitAmount', 'VAT', 'data']
價值清單:
[
['Date', '2022-01-01T11:11:13'],
['DueDate', '2022-01-01T11:11:13'],
['Name', 'Name_of_the_shop'],
['Reference', 'Orders closed 1 Febuary 2022']
['VAT', False],
[['AccountCode', '1'], ['Description', 'Discount'], ['TaxAmount', -0.2], ['TaxType', '4'], ['Quantity', 1], ['UnitAmount', -2]],
[['AccountCode', '1'], ['Description', 'Discount'], ['TaxAmount', 1.9], ['TaxType', '4'], ['Quantity', 3], ['UnitAmount', -5]],
[['Code', '3'], ['Description', 'Sales'], ['TaxAmount', 1], ['TaxType', '3'], ['Quantity', 1], ['UnitAmount', 10]],
[['Code', '3'], ['Description', 'Sales'], ['TaxAmount', 1], ['TaxType', '3'], ['Quantity', 2], ['UnitAmount', 8]]
]
嘗試使用帶有 sort_keys 功能的 json 庫。
import json
sorted_json_data = json.dumps(data, sort_keys=True)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.