合并嵌套级别JSON

2024-09-30 05:14:59 发布

您现在位置:Python中文网/ 问答频道 /正文

必须合并两个此类JSON

我想把CCDD结合起来,等等;以及内部键:a1b1&c1

JSON1:

{
  "A": 1,
  "B": "b_value",
  "C": {
    "a1": "true",
    "b1": [
      "b1_1",
      "b1_2"
    ],
    "c1": [
      {
        "c1_1": "100",
        "c1_2": "SF",
        "c1_3": "false"
      },
      {
        "c1_1": "101",
        "c1_2": "SF",
        "c1_3": "false"
      },
      {
        "c1_1": "200",
        "c1_2": "SF",
        "c1_3": "false"
      },
      {
        "c1_1": "201",
        "c1_2": "SF",
        "c1_3": "false"
      },
      {
        "c1_1": "300",
        "c1_2": "SF",
        "c1_3": "false"
      },
      {
        "c1_1": "301",
        "c1_2": "SF",
        "c1_3": "false"
      },
      {
        "c1_1": "400",
        "c1_2": "SF",
        "c1_3": "true"
      },
      {
        "c1_1": "400",
        "c1_2": "SO",
        "c1_3": "true"
      },
      {
        "c1_1": "500",
        "c1_2": "SF",
        "c1_3": "true"
      },
      {
        "c1_1": "500",
        "c1_2": "SO",
        "c1_3": "true"
      },
      {
        "c1_1": "501",
        "c1_2": "SF",
        "c1_3": "true"
      },
      {
        "c1_1": "*",
        "c1_2": "SA",
        "c1_3": "true"
      }
    ]
  },
  "D": {
    "a1": "true",
    "b1": [
      "HBI",
      "HST"
    ],
    "c1": [
      {
        "c1_1": "100",
        "c1_2": "SF",
        "c1_3": "false"
      },
      {
        "c1_1": "101",
        "c1_2": "SF",
        "c1_3": "false"
      },
      {
        "c1_1": "200",
        "c1_2": "SF",
        "c1_3": "false"
      },
      {
        "c1_1": "201",
        "c1_2": "SF",
        "c1_3": "false"
      },
      {
        "c1_1": "301",
        "c1_2": "SF",
        "c1_3": "true"
      },
      {
        "c1_1": "600",
        "c1_2": "SF",
        "c1_3": "false"
      },
      {
        "c1_1": "601",
        "c1_2": "SF",
        "c1_3": "false"
      },
      {
        "c1_1": "600",
        "c1_2": "SO",
        "c1_3": "false"
      },
      {
        "c1_1": "700",
        "c1_2": "SF",
        "c1_3": "false"
      },
      {
        "c1_1": "701",
        "c1_2": "SF",
        "c1_3": "false"
      },
      {
        "c1_1": "700",
        "c1_2": "SO",
        "c1_3": "false"
      },
      {
        "c1_1": "*",
        "c1_2": "SA",
        "c1_3": "true"
      }
    ]
  },
  "E": {
    "a1": "true",
    "b1": [
      "HBI",
      "HST"
    ],
    "c1": [
      {
        "c1_1": "100",
        "c1_2": "SF",
        "c1_3": "false"
      },
      {
        "c1_1": "101",
        "c1_2": "SF",
        "c1_3": "true"
      },
      {
        "c1_1": "400",
        "c1_2": "SF",
        "c1_3": "false"
      },
      {
        "c1_1": "500",
        "c1_2": "SF",
        "c1_3": "false"
      },
      {
        "c1_1": "600",
        "c1_2": "SF",
        "c1_3": "false"
      },
      {
        "c1_1": "700",
        "c1_2": "SF",
        "c1_3": "false"
      },
      {
        "c1_1": "*",
        "c1_2": "SA",
        "c1_3": "true"
      }
    ]
  },
  "F": {
    "a1": "true",
    "b1": [
      "HBI",
      "HST"
    ],
    "c1": [
      {
        "c1_1": "100",
        "c1_2": "SF",
        "c1_3": "true"
      },
      {
        "c1_1": "101",
        "c1_2": "SF",
        "c1_3": "true"
      },
      {
        "c1_1": "200",
        "c1_2": "SF",
        "c1_3": "true"
      },
      {
        "c1_1": "201",
        "c1_2": "SF",
        "c1_3": "false"
      },
      {
        "c1_1": "200",
        "c1_2": "SO",
        "c1_3": "true"
      },
      {
        "c1_1": "*",
        "c1_2": "SA",
        "c1_3": "true"
      }
    ]
  },
  "G": "LE",
  "H": {
    "primaryMethod": {
      "a1": "TF",
      "b1": [
        "HBI",
        "HST"
      ],
      "c1": [
        {
          "c1_1": "100",
          "c1_2": "SA",
          "c1_3": "TF"
        },
        {
          "c1_1": "101",
          "c1_2": "SA",
          "c1_3": "TF"
        },
        {
          "c1_1": "200",
          "c1_2": "SA",
          "c1_3": "TF"
        },
        {
          "c1_1": "201",
          "c1_2": "SA",
          "c1_3": "TF"
        }
      ]
    },
    "secondaryMethod": {
      "a1": "TF",
      "b1": [
        "HBI",
        "HST"
      ],
      "c1": [
      ]
    }
  },
  "I": "false",
  "J": {
    "a1": "false",
    "b1": [
      "HBI",
      "HST",
      "HFT"
    ],
    "c1": [
      {
        "c1_1": "201",
        "c1_2": "SA",
        "feeType": "FA",
        "c1_3": "true"
      },
      {
        "c1_1": "*",
        "c1_2": "SA",
        "feeType": "FA",
        "c1_3": "false"
      }
    ]
  },
  "K": [
    {
      "k1": "k1_value",
      "k2": "k2_value",
      "k3": "k3_value",
      "k4": "k4_value",
      "k5": "k5_value"
    }
  ]
}

JSON2:

{
  "A": 1,
  "B": "b_value",
  "C": {
    "a1": "true",
    "b1": [
      "b1_1",
      "b1_2",
      "b1_3"
    ],
    "c1": [
      {
        "c1_1": "1000",
        "c1_2": "SF",
        "c1_3": "false"
      },
      {
        "c1_1": "1010",
        "c1_2": "SF",
        "c1_3": "false"
      },
      {
        "c1_1": "2000",
        "c1_2": "SF",
        "c1_3": "false"
      },
      {
        "c1_1": "201",
        "c1_2": "SF",
        "c1_3": "false"
      },
      {
        "c1_1": "300",
        "c1_2": "SF",
        "c1_3": "false"
      },
      {
        "c1_1": "301",
        "c1_2": "SF",
        "c1_3": "false"
      },
      {
        "c1_1": "400",
        "c1_2": "SF",
        "c1_3": "true"
      },
      {
        "c1_1": "400",
        "c1_2": "SO",
        "c1_3": "true"
      },
      {
        "c1_1": "500",
        "c1_2": "SF",
        "c1_3": "true"
      }
    ]
  },
  "D": {
    "a1": "true",
    "b1": [
      "HBI",
      "HST"
    ],
    "c1": [
      {
        "c1_1": "100",
        "c1_2": "SF",
        "c1_3": "false"
      },
      {
        "c1_1": "101",
        "c1_2": "SF",
        "c1_3": "false"
      },
      {
        "c1_1": "200",
        "c1_2": "SF",
        "c1_3": "false"
      },
      {
        "c1_1": "201",
        "c1_2": "SF",
        "c1_3": "false"
      },
      {
        "c1_1": "301",
        "c1_2": "SF",
        "c1_3": "true"
      },
      {
        "c1_1": "600",
        "c1_2": "SF",
        "c1_3": "false"
      },
      {
        "c1_1": "601",
        "c1_2": "SF",
        "c1_3": "false"
      },
      {
        "c1_1": "600",
        "c1_2": "SO",
        "c1_3": "false"
      },
      {
        "c1_1": "700",
        "c1_2": "SF",
        "c1_3": "false"
      },
      {
        "c1_1": "701",
        "c1_2": "SF",
        "c1_3": "false"
      },
      {
        "c1_1": "700",
        "c1_2": "SO",
        "c1_3": "false"
      },
      {
        "c1_1": "*",
        "c1_2": "SA",
        "c1_3": "true"
      }
    ]
  },
  "E": {
    "a1": "true",
    "b1": [
      "HBI",
      "HST"
    ],
    "c1": [
      {
        "c1_1": "100",
        "c1_2": "SF",
        "c1_3": "false"
      },
      {
        "c1_1": "101",
        "c1_2": "SF",
        "c1_3": "true"
      },
      {
        "c1_1": "400",
        "c1_2": "SF",
        "c1_3": "false"
      },
      {
        "c1_1": "500",
        "c1_2": "SF",
        "c1_3": "false"
      },
      {
        "c1_1": "600",
        "c1_2": "SF",
        "c1_3": "false"
      },
      {
        "c1_1": "700",
        "c1_2": "SF",
        "c1_3": "false"
      },
      {
        "c1_1": "*",
        "c1_2": "SA",
        "c1_3": "true"
      }
    ]
  },
  "F": {
    "a1": "true",
    "b1": [
      "HBI",
      "HST"
    ],
    "c1": [
      {
        "c1_1": "100",
        "c1_2": "SF",
        "c1_3": "true"
      },
      {
        "c1_1": "101",
        "c1_2": "SF",
        "c1_3": "true"
      },
      {
        "c1_1": "200",
        "c1_2": "SF",
        "c1_3": "true"
      },
      {
        "c1_1": "201",
        "c1_2": "SF",
        "c1_3": "false"
      },
      {
        "c1_1": "200",
        "c1_2": "SO",
        "c1_3": "true"
      },
      {
        "c1_1": "*",
        "c1_2": "SA",
        "c1_3": "true"
      }
    ]
  },
  "G": "LE",
  "H": {
    "primaryMethod": {
      "a1": "TF",
      "b1": [
        "HBI",
        "HST"
      ],
      "c1": [
        {
          "c1_1": "100",
          "c1_2": "SA",
          "c1_3": "TF"
        },
        {
          "c1_1": "101",
          "c1_2": "SA",
          "c1_3": "TF"
        },
        {
          "c1_1": "200",
          "c1_2": "SA",
          "c1_3": "TF"
        },
        {
          "c1_1": "201",
          "c1_2": "SA",
          "c1_3": "TF"
        }
      ]
    },
    "secondaryMethod": {
      "a1": "TF",
      "b1": [
        "HBI",
        "HST"
      ],
      "c1": [
      ]
    }
  },
  "I": "false",
  "J": {
    "a1": "false",
    "b1": [
      "HBI",
      "HST",
      "HFT"
    ],
    "c1": [
      {
        "c1_1": "201",
        "c1_2": "SA",
        "feeType": "FA",
        "c1_3": "true"
      },
      {
        "c1_1": "*",
        "c1_2": "SA",
        "feeType": "FA",
        "c1_3": "false"
      }
    ]
  },
  "K": [
    {
      "k1": "k1_value",
      "k2": "k2_value",
      "k3": "k3_value",
      "k4": "k4_value",
      "k5": "k5_value"
    }
  ]
}

预期产出:

{
  "A": 1,
  "B": "b_value",
  "C": {
    "a1": "true",
    "b1": [
      "b1_1",
      "b1_2",
      "b1_3"
    ],
    "c1": [
      {
        "c1_1": "1000",
        "c1_2": "SF",
        "c1_3": "false"
      },
      {
        "c1_1": "1010",
        "c1_2": "SF",
        "c1_3": "false"
      },
      {
        "c1_1": "2000",
        "c1_2": "SF",
        "c1_3": "false"
      },
      {
        "c1_1": "100",
        "c1_2": "SF",
        "c1_3": "false"
      },
      {
        "c1_1": "101",
        "c1_2": "SF",
        "c1_3": "false"
      },
      {
        "c1_1": "200",
        "c1_2": "SF",
        "c1_3": "false"
      },
      {
        "c1_1": "201",
        "c1_2": "SF",
        "c1_3": "false"
      },
      {
        "c1_1": "300",
        "c1_2": "SF",
        "c1_3": "false"
      },
      {
        "c1_1": "301",
        "c1_2": "SF",
        "c1_3": "false"
      },
      {
        "c1_1": "400",
        "c1_2": "SF",
        "c1_3": "true"
      },
      {
        "c1_1": "400",
        "c1_2": "SO",
        "c1_3": "true"
      },
      {
        "c1_1": "500",
        "c1_2": "SF",
        "c1_3": "true"
      },
      {
        "c1_1": "500",
        "c1_2": "SO",
        "c1_3": "true"
      },
      {
        "c1_1": "501",
        "c1_2": "SF",
        "c1_3": "true"
      },
      {
        "c1_1": "*",
        "c1_2": "SA",
        "c1_3": "true"
      }
    ]
  },
  "D": {
    "a1": "true",
    "b1": [
      "HBI",
      "HST"
    ],
    "c1": [
      {
        "c1_1": "100",
        "c1_2": "SF",
        "c1_3": "false"
      },
      {
        "c1_1": "101",
        "c1_2": "SF",
        "c1_3": "false"
      },
      {
        "c1_1": "200",
        "c1_2": "SF",
        "c1_3": "false"
      },
      {
        "c1_1": "201",
        "c1_2": "SF",
        "c1_3": "false"
      },
      {
        "c1_1": "301",
        "c1_2": "SF",
        "c1_3": "true"
      },
      {
        "c1_1": "600",
        "c1_2": "SF",
        "c1_3": "false"
      },
      {
        "c1_1": "601",
        "c1_2": "SF",
        "c1_3": "false"
      },
      {
        "c1_1": "600",
        "c1_2": "SO",
        "c1_3": "false"
      },
      {
        "c1_1": "700",
        "c1_2": "SF",
        "c1_3": "false"
      },
      {
        "c1_1": "701",
        "c1_2": "SF",
        "c1_3": "false"
      },
      {
        "c1_1": "700",
        "c1_2": "SO",
        "c1_3": "false"
      },
      {
        "c1_1": "*",
        "c1_2": "SA",
        "c1_3": "true"
      }
    ]
  },
  "E": {
    "a1": "true",
    "b1": [
      "HBI",
      "HST"
    ],
    "c1": [
      {
        "c1_1": "100",
        "c1_2": "SF",
        "c1_3": "false"
      },
      {
        "c1_1": "101",
        "c1_2": "SF",
        "c1_3": "true"
      },
      {
        "c1_1": "400",
        "c1_2": "SF",
        "c1_3": "false"
      },
      {
        "c1_1": "500",
        "c1_2": "SF",
        "c1_3": "false"
      },
      {
        "c1_1": "600",
        "c1_2": "SF",
        "c1_3": "false"
      },
      {
        "c1_1": "700",
        "c1_2": "SF",
        "c1_3": "false"
      },
      {
        "c1_1": "*",
        "c1_2": "SA",
        "c1_3": "true"
      }
    ]
  },
  "F": {
    "a1": "true",
    "b1": [
      "HBI",
      "HST"
    ],
    "c1": [
      {
        "c1_1": "100",
        "c1_2": "SF",
        "c1_3": "true"
      },
      {
        "c1_1": "101",
        "c1_2": "SF",
        "c1_3": "true"
      },
      {
        "c1_1": "200",
        "c1_2": "SF",
        "c1_3": "true"
      },
      {
        "c1_1": "201",
        "c1_2": "SF",
        "c1_3": "false"
      },
      {
        "c1_1": "200",
        "c1_2": "SO",
        "c1_3": "true"
      },
      {
        "c1_1": "*",
        "c1_2": "SA",
        "c1_3": "true"
      }
    ]
  },
  "G": "LE",
  "H": {
    "primaryMethod": {
      "a1": "TF",
      "b1": [
        "HBI",
        "HST"
      ],
      "c1": [
        {
          "c1_1": "100",
          "c1_2": "SA",
          "c1_3": "TF"
        },
        {
          "c1_1": "101",
          "c1_2": "SA",
          "c1_3": "TF"
        },
        {
          "c1_1": "200",
          "c1_2": "SA",
          "c1_3": "TF"
        },
        {
          "c1_1": "201",
          "c1_2": "SA",
          "c1_3": "TF"
        }
      ]
    },
    "secondaryMethod": {
      "a1": "TF",
      "b1": [
        "HBI",
        "HST"
      ],
      "c1": [
      ]
    }
  },
  "I": "false",
  "J": {
    "a1": "false",
    "b1": [
      "HBI",
      "HST",
      "HFT"
    ],
    "c1": [
      {
        "c1_1": "201",
        "c1_2": "SA",
        "feeType": "FA",
        "c1_3": "true"
      },
      {
        "c1_1": "*",
        "c1_2": "SA",
        "feeType": "FA",
        "c1_3": "false"
      }
    ]
  },
  "K": [
    {
      "k1": "k1_value",
      "k2": "k2_value",
      "k3": "k3_value",
      "k4": "k4_value",
      "k5": "k5_value"
    }
  ]
}

我尝试了以下代码:

for i_data in [data1, data2]:
    with open(i_data) as data_json:
        data = json.load(data_json)

    for key, value in data.items():
        if key not in new_dict:
            if isinstance(value, int):
                new_dict[key] = value
            if isinstance(value, str):
                new_dict[key] = value
            if isinstance(value, list):
                new_dict[key] = list()
            if isinstance(value, dict):
                new_dict[key] = dict()
        if key in new_dict:
            if isinstance(value, list):
                new_dict[key] += value
            if isinstance(value, dict):
                dict1 = new_dict[key]
                for key1, value1 in value.items():
                    if key1 not in dict1:
                        if isinstance(value1, str):
                            dict1[key1] = value1
                        if isinstance(value1, list):
                            dict1[key1] = list()
                    if key1 in dict1:
                        if isinstance(value1, list):
                            dict1[key1] += value1
                new_dict[key] = dict1

with open((base_path + 'g_json.json'), 'w') as op_file:
    json.dump(new_dict, op_file, indent=2)

Tags: keyfalsetrueifsovaluetfa1

热门问题