2017-03-02 444 views
0

我正在尋找將兩個JSON字符串合併到一個Python中。字符串1具有相同的密鑰爲字符串2,但字符串2在列表中有多個值,如下面的例子:在Python中合併兩個JSON字符串,並使用值列表

字符串1:

{'Target': 'DEV1', 'Supplier': '0', 'Message': 'A', 'Name': 'Supp1'} 

字符串2:

{'Target': ['DEV2', 'DEV3'], 'Supplier': ['1', '2'], 'Message': ['B', 'C'], 'Name': ['Supp2', 'Supp3']} 

有希望的合併輸出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

你可以爲這三個字符串發佈'print'嗎? – magicleon

+0

你提供的Json格式不是相同的,如果你在'Value'上有兩個不同值的string1?什麼應該是輸出?如果你交換str1和str2, – KIDJourney

回答

1

這是一個簡單的方法來實現你想要的相同的鍵。

merged_str = { key: [str1[key]]+str2[key] for key in str2 } 

BTW,他們被稱爲字典,而不是JSON字符串。

+0

不起作用 – valentin

+0

OP已經特別提到了string2有這個列表。 –

+0

謝謝,這種方法適用於我,並且看起來是最簡單的解決方案 – MikG

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