使用值列表合并Python中的两个JSON字符串

时间:2017-03-02 12:32:36

标签: python json

我希望在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字符串的最后一行,但我正在为每个值附加列表而苦苦挣扎。

非常感谢任何帮助。

2 个答案:

答案 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字符串。