簡體   English   中英

平面 json 到嵌套 json python

[英]Flat json to nested json python

我想將輸入 json 轉換為定義的嵌套 json,我想不出任何 json 庫來幫助我實現這一目標

輸入 json

[{'Name': 'John', 'state': 'Boston', 'currency': 'USD', 'marks': 100},
{'Name': 'Rohan', 'state': 'Paris', 'currency': 'EUR', 'marks': 20},
{'Name': 'Rohan', 'state': 'Lyon', 'currency': 'EUR', 'marks': 11.4},
{'Name': 'Messi', 'state': 'Madrid', 'currency': 'EUR', 'marks': 9.9},
{'Name': 'Lampard', 'state': 'London', 'currency': 'GBP', 'marks': 12.2},
{'Name': 'Lampard', 'state': 'London', 'currency': 'FBP', 'marks': 10.9}]

output json

{
  "USD": {
    "John": {
      "Boston": [
        {
          "Marks": 100
        }
      ]
    },


當前場景基於值 Currency,Name,state,marks

如果需要,嵌套的 json 可以放置到 n 級,例如名稱和 state 和標記,或者它可以是名稱、貨幣、state 和標記或名稱、貨幣

所以你想要貨幣 > 名稱 > state > 標記列表。

一種解決方案是使用defaultdict創建結構,然后添加。

from collections import defaultdict
from functools import wraps

data = [...]

def ddmaker(type_):
    @wraps(dict)
    def caller():
        return defaultdict(type_)
    return caller

# create the structure of the output
output = defaultdict(ddmaker(ddmaker(list)))

# add to it
for item in data:
    currency = item["currency"]
    name = item["Name"]
    state = item["state"]
    mark = item["marks"]

    output[currency][name][state].append({'Marks': mark})

暫無
暫無

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

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