假设我有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'}}]}
答案 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'}}]}