我希望在Python中将两个JSON字符串合并为一个。 string1与string2具有相同的键,但string2在列表中有多个值,如下例所示:
字符串1:
{'Target': 'DEV1', 'Supplier': '0', 'Message': 'A', 'Name': 'Supp1'}
字符串2:
{'Target': ['DEV2', 'DEV3'], 'Supplier': ['1', '2'], 'Message': ['B', 'C'], 'Name': ['Supp2', 'Supp3']}
Hopeful Merged Output string3:
{'Target': ['DEV1', 'DEV2', 'DEV3'], 'Supplier': ['0', '1', '2'], 'Message': ['A', 'B', 'C'], 'Name': ['Supp1', 'Supp2', 'Supp3']}
我对JSON不太熟悉,但这是我目前的职位:
import json
str1 = json.loads(string1)
str2 = json.loads(string2)
string3 = {key, val for (key, val) in (str1.items() and str2.items())
我在Stackoverflow中找到的用于合并JSON字符串的最后一行,但我正在为每个值附加列表而苦苦挣扎。
非常感谢任何帮助。
答案 0 :(得分:1)
现在是一个有效的答案
def toList(x):
if isinstance(x, list):
return x
else:
return [x,]
s3 = {k:toList(s1[k])+ toList(s2[k]) for k in s1.keys()}
在s1和s2中假设相同的键
答案 1 :(得分:1)
这是实现目标的简便方法。
merged_str = { key: [str1[key]]+str2[key] for key in str2 }
BTW它们被称为字典而不是JSON字符串。