2016-02-21 4 views
-2

У меня есть два dicts, как это:Как объединить два JSONs

array1=["1","2"] 
array=[ 
     [{"a":"1"},{"b":"2"}], 
     [{"c":"1"},{"d":"2"}] 
    ] 

Я хочу, чтобы преобразовать их в JSONs, а затем объединить их, как это:

json3=[ 
     "1": [{a:"1"},{b:"2"}], 
     "2": [{c:"1"},{d:"2"}]   
    ] 

Я превратил их в JSON по json.dumps(), и теперь я не могу понять, как объединить их так, как я хочу.

Мой вопрос как-то похож на this one, но результаты разные.

Я попытался это:

json3 = {key: value for (key, value) in (json1.items() + json2.items())} 

Но я получаю:

'str' object has no attribute 'items' 

Я пробовал некоторые другие способы, но ни один из них не работал, как я хотел

dict_of_dicts = {i:d for i, d in zip(idJson, imgJson)} # Also didn't work 
+0

Вы должны 'json.loads'. –

+0

@PadraicCunningham И 'json.dumps' –

+0

Почему вы публикуете что-то похожее на списки python, когда они являются строками? Позаботьтесь об этом? – timgeb

ответ

2

Вы можете использовать json библиотека для этого.

json.loads преобразует строку json в dict. json.dumps восстанавливает ваш json от dict.

json1='["1","2"]' 
json2='[[{"a":"1"},{"b":"2"}],[{"c":"1"},{"d":"2"}]]' 
import json 
j1 = json.loads(json1) 
j2 = json.loads(json2) 
j3 = dict(zip(j1, j2)) 
json3 = json.dumps(j3) 

Выход будет

>>> json3 
'{"1": [{"a": "1"}, {"b": "2"}], "2": [{"c": "1"}, {"d": "2"}]}' 
Смежные вопросы