首页 > 解决方案 > python中的json数据操作

问题描述

我有两组 JSON 格式的数据:

数据1

{
  "c_u0": [
    {
      "en_name": "akamai app external-dfgt",
      "en_id": 446,
      "spur": {
        "spcg": [
          {
            "a_id": 234,
            "b_id": "e_id from data2 to be inserted here",
            "cls": [
              {
                "address": "{\"fgt\":\"Cc\",\"Ik\":\"01\",\"IV_Y\":\"CP1\",\"IID\":\"0054\",\"IY\":1,\"SL\":\"https://ap.com\",\"OC\":\"\"}",
                "cl_id": 456103,
                "type": "SC",
                "name": "SFTPC",
                "srt": "sdp%",
                "oner": "ar"
              }
            ],
            "adata": false
          }
        ]
      }
    },
    {
      "en_name": "Aakle-akamai",
      "en_id": 444,
      "spur": {
        "spcg": [
          {
            "a_id": 456,
            "b_id": "e_id from data2 to be inserted here",
            "cls": [
              {
                "address": "{\"fgt\":\"Cc\",\"Ik\":\"01\",\"IV_Y\":\"CP1\",\"IID\":\"0054\",\"IY\":1,\"SL\":\"https://ap.com\",\"OC\":\"\"}",
                "cl_id": 4545673,
                "type": "SG",
                "name": "SMC",
                "srt": "sdfe",
                "oner": "agtr"
              }
            ],
            "adata": false
          }
        ]
      }
    },
    {
      "en_name": "APLOI - Zedgede",
      "en_id": 48946,
      "spur": {
        "spcg": [
          {
            "a_id": 47654,
            "b_id": "e_id from data2 to be inserted here",
            "cls": [
              {
                "address": "{\"fgt\":\"Cc\",\"Ik\":\"01\",\"IV_Y\":\"CP1\",\"IID\":\"0054\",\"IY\":1,\"SL\":\"https://ap.com\",\"OC\":\"\"}",
                "cl_id": 456178803,
                "type": "SjC",
                "name": "SFTPd",
                "secret": "sdpb%",
                "owner": "arb"
              }
            ],
            "adata": false
          }
        ]
      }
    }
  ]
}

数据2

[
  {
    "en_name": "Aakle-akamai",
    "eid": 1111
  },
  {
    "en_name": "Appg - ies"
  },
  {
    "en_name": "c console",
    "e_id": 1131
  },
  {
    "en_name": "akamai app external- dfgt",
    "e_id": 1122
  }
]

我正在尝试检查en_namedata1 和 data2 中是否匹配。在比赛中,然后执行以下操作:

  1. 创建另一个映射的数据集(dict)作为 data3,它将有两个元素。spcg来自 data1 和e_iddata2的完整数组。
  2. 将数组中key的默认值b_id(来自data2的e_id插入这里)替换为来自data2spcg的匹配项e_id

这是我尝试过的,甚至与en_name. 不知道如何实现这一点,特别是第二个,因为我不是 python 专家

ab=[]
cd=[]
for keyt in data1:
    temp=data1['en_name']
    for keyz in data2:
        if temp == keyz['en_name']:
             ab.append(keyz['e_id'])
             cd.append(key['spcg'])
data3 =[{'e_name': b, 'spcg': l} for b, l in zip(ab, cd)]

任何帮助都会很棒

标签: pythonpython-3.x

解决方案


您应该在 python 中使用内置json — JSON encoder and decoder库。这个库简化了json文件的处理。

这是您可能想尝试的代码:

import json

data3 = []
with open("data1.json", "r") as f1:
    data1 = json.load(f1)
    with open("data2.json", "r") as f2:
        data2 = json.load(f2)
        for item1 in data1["c_u0"]:
            for item2 in data2:
                if item1["en_name"] == item2["en_name"]:
                    spcg = item1["spur"]["spcg"]
                    eid = item2["eid"]

                    for sp in spcg:
                        sp["b_id"] = eid # substitute the b_id with eid

                    data3.append({ "spcg": spcg, "e_id": eid})

print(data3)

希望这可以帮助。


推荐阅读