Python - конвертировать строки в JSON и объединить - PullRequest
0 голосов
/ 10 марта 2011

У меня есть две строки, полученные из URL-адреса API

pagehandle = urllib2.urlopen(ariel_url+"?%s"  % params1)
data1 = pagehandle.read(); 
pagehandle = urllib2.urlopen(ariel_url+"?%s"  % params2)
data2 = pagehandle.read(); 

data1 и data2 содержат следующее string

{"priority":"HIGH", "titles":["Brand", "Likes"], "values":[["addidas", 130],["nike", 180]]}

{"priority":"HIGH", "titles":["Brand", "Likes"], "values":[["iphone", 49],["ipod", 590]]}

Я хочу преобразовать эти две строки в jsonи объединить (или объединить строки и затем преобразовать) таким образом, чтобы вывод json мог понравиться

{"priority":"HIGH", "titles":["Brand", "Likes"], "values":[["addidas", 130],["nike", 180],["iphone", 49],["ipod", 590]]]}

Как я могу это сделать?я предпочитаю использовать библиотеку simplejson

Ответы [ 2 ]

3 голосов
/ 10 марта 2011

Вот, пожалуйста:

import json
a = json.loads('{"priority":"HIGH", "titles":["Brand", "Likes"], "values":[["addidas", 130],["nike", 180]]}')
b = json.loads('{"priority":"HIGH", "titles":["Brand", "Likes"], "values":[["iphone", 49],["ipod", 590]]}')

for value in a['values']:
   b['values'].append(value)

# edited
json.dumps(b)
3 голосов
/ 10 марта 2011

Это не строки, а словари.Вы можете объединить эти словари так:

def combine(dict1, dict2):
    if dict1['priority'] == dict2['priority'] and dict1['titles'] == dict2['titles']:
        return {
            'priority': dict1['priority'],
            'titles': dict1['titles'],
            'values': dict1['values'] + dict2['values']
        }

, после этого просто запустите:

import json
json.dumps(combine(dict1, dict2))

, и вы получите json из этих двух объединенных словарей.

РЕДАКТИРОВАТЬ

Итак, я понимаю, что вы действительно получили:

s1 = '{"priority":"HIGH", "titles":["Brand", "Likes"], values:[["addidas", 130],["nike", 180]]}'

s2 = '{"priority":"HIGH", "titles":["Brand", "Likes"], values:[["iphone", 49],["ipod", 590]]}'

В этом случае вы можете запустить:

dict1 = json.loads(s1)
dict2 = json.loads(s2)
result = combine(dict1, dict2)
...