亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

使用 Python 創建復雜的 JSON 并創建一些有條件的嵌套數組

使用 Python 創建復雜的 JSON 并創建一些有條件的嵌套數組

手掌心 2022-01-18 17:44:24
在使用 Python 動態創建較大 JSON 字符串的一部分時,我想僅在更高級別的值(在我的情況下為表名)為一個特定的值。到目前為止的結構是一個 TNFL,我想有條件地將另一個對象與“字段”和“值”一起添加到結構中。到目前為止我所擁有的:constJSON = []i = 0for k, v in datDictNorm.iteritems():    constJSON.append({"table":k, "inserts":[]})    if v:        for d in v:            flds = list(d.keys())            constJSON[i]["inserts"].append({                              "fields": flds,                              "values": [d[f] for f in flds]            })        i += 1當表'k'等于'table_x'時,我需要最里面的.append / for循環來添加另一個對象/值,除了名為'nestedTableInsert'的“字段”和“值”對象之外,它有自己的.append函數在我的最終 JSON 中僅為特定表創建另一個層,使其看起來像這樣,但語法正確:我想要做的工作:constJSON = []i = 0for k, v in datDictNorm.iteritems():    constJSON.append({"table": k, "inserts": []})    if v:        for d in v:                flds = list(d.keys())        if k != "name":            constJSON[i]["inserts"].append({                    "fields": flds,                    "values":  [d[f] for f in flds]})        else:            for k2, v2 in prvDictNorm.iteritems():                constJSON[i]["inserts"].append({                    "fields": flds,                    "values":  [d[f] for f in flds],                    "nestedTableInsert": []})        i += 1添加“nestedTableInsert”:對象的結構與其父插入對象相同,因此最終的 JSON 看起來像
查看完整描述

2 回答

?
長風秋雁

TA貢獻1757條經驗 獲得超7個贊

90% 的情況是這樣,但是正在創建的嵌套表插入的字段和值數組填充了相同的記錄信息,而不是創建與每個父 place_nm 插入關聯的唯一nestedTableInsert 記錄信息。仍然需要弄清楚這個最內層的迭代。


tableInsert = []

i = 0

for k, v in mainDictNorm.iteritems():

    tableInsert.append({"table": k, "inserts": []})

    if v:

        for d in v:

            flds = list(d.keys())

            if k != "place_nm":

                tableInsert[i]["inserts"].append({

                    "fields": flds,

                    "values":  [d[f] for f in flds]})

            else:

                i = 0

                nestedTableInsert = []

                for k2, v2 in nestDictNorm.iteritems():

                    nestedTableInsert.append({"table": k2, "inserts": []})

                    if v2:

                        for d2 in v2:

                            flds2 = list(d2.keys())

                    tableInsert[i],nestedTableInsert[i]["inserts"].append({

                        "fields": flds2,

                        "values":  [d2[f2] for f2 in flds2]})

                    i += 1

                tableInsert[i]["inserts"].append({

                    "fields": flds,

                    "values":  [d[f] for f in flds],

                    "nestedTableInsert": nestedTableInsert})

        i += 1


查看完整回答
反對 回復 2022-01-18
?
臨摹微笑

TA貢獻1982條經驗 獲得超2個贊

constJSON = []

i = 0

for k, v in datDictNorm.iteritems():

    constJSON.append({"table": k, "inserts": []})

    if v:

        for d in v:

            flds = list(d.keys())

            constJSON[i]["inserts"].append({

                "fields": flds,

                "values": [d[f] for f in flds]

            })

            if k == "table_x":

                constJSON[i]["nestedTableInsert"].append({

                    "fields": flds2,

                    "values": [d2[f2] for f2 in flds2 if k in thing]

                })

        i += 1


myJSON = json.dumps(constJSON)


查看完整回答
反對 回復 2022-01-18
  • 2 回答
  • 0 關注
  • 296 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號