一起添加JSON数据

时间:2018-08-22 19:22:44

标签: python-3.x dictionary merge

假设我有2个JSON对象(字典):

first_dict={"features": [{"attributes": {"id": "KA88457","name": "Steven", "phone":"+6590876589"}}]}
second_dict={"features": [{"attributes": {"id": "KA88333","name": "John", "phone":"+6590723456"}}]}

我想添加它们,以便获得类似这样的内容:

{"features": [{"attributes": {"id": "KA88457","name": "Steven", "phone":"+6590876589"}}], 'features': [{'attributes': {'id': 'KA88333', 'name': 'John', 'phone': '+6590723456'}}]}

如果我使用first_dict.update(second_dict),则会得到以下结果。我该如何解决?

{'features': [{'attributes': {'id': 'KA88333', 'name': 'John', 'phone': '+6590723456'}}]}

2 个答案:

答案 0 :(得分:1)

根据RFC 7159,对象内不能有重复的名称。

  

对象结构表示为一对大括号      零个或多个名称/值对(或成员)。名字是一个      串。每个名称后都有一个冒号,将名称分开      从值。单个逗号将值与后跟      名称。 对象中的名称应唯一。

尽管如此,原始的JSON标准ECMA-404并没有说明重复的名称。大多数JSON库(包括python3 JSON库)都不支持此功能。

您无法执行此操作的另一个原因是,您试图为字典中的键(基本上是hash map)使用两个不同的值。

如果您确实需要此功能,则必须编写自己的序列化程序,或者为支持此功能的python找到一个JSON库。

答案 1 :(得分:1)

由于两个字典具有相同的键“功能”,因此您需要重命名键之一,并将其​​及其值添加到词典之一中。这是避免合并冲突的一种方法。例如:

second_dict={"features": [{"attributes": {"id": "KA88333","name": "John", "phone":"+6590723456"}}]}
first_dict={"features": [{"attributes": {"id": "KA88457","name": "Steven", "phone":"+6590876589"}}]}

temp_var = second_dict['features']
first_dict['features2'] = temp_var

first_dict中的合并数据:

{'features': [{'attributes': {'id': 'KA88457', 'name': 'Steven', 'phone': '+6590876589'}}], 'features2': [{'attributes': {'id': 'KA88333', 'name': 'John', 'phone': '+6590723456'}}]}