#python #json #python-2.7
#python #json #python-2.7
Вопрос:
Мне было поручено объединить данные из двух разных источников в один JSON для использования веб-службой. Я решил использовать flask, который, как я обнаружил, настолько прост в использовании. В любом случае, я извлекаю JSON, который выглядит следующим образом (через urlib2 )….
[
[{
"timestamp": 1474088400000,
"errors": 1018831,
"errorTotal": 72400021,
"errorTotal2": 0.013022892930509898,
"business": 4814994,
"breakdown": [{
"type": "type1",
"count": 603437
}, {
"type": "type2",
"count": 256187
}]
}]
]
Все, что я пытаюсь сделать, это добавить новую пару ключей в разделе «разбивка», в частности «type3», поэтому объект JSON выглядит следующим образом…
[
[{
"timestamp": 1474088400000,
"errors": 1018831,
"errorTotal": 72400021,
"errorTotal2": 0.013022892930509898,
"business": 4814994,
"breakdown": [{
"type": "type1",
"count": 603437
}, {
"type": "type2",
"count": 256187
}, {
"type": "type3",
"count": 4533
}]
}]
]
Я думал, что лучше всего будет обращаться с ним как с парами ключей в списке, но, похоже, это не работает. Кто-нибудь может указать мне правильное направление?
Заранее большое спасибо!
Комментарии:
1. похоже, что это список, возможно, можно добавить к нему в python с
d[0][0]['breakdown'].append({"type": "type3", "count": 4533})
Ответ №1:
Сначала вы должны прочитать json в объекты Python:
data = json.loads(jsonstring)
Затем перейдите к объекту, который нужно изменить. Данные выглядят так [ [ {... 'breakdown': ...} ] ]
, поэтому это список списков словарей. Я думаю, вы хотите их все:
for d in data:
for dd in d:
d['breakdown'].append({"type": "type3", "count": 4533})
Затем преобразуйте его обратно в json:
update_json = json.dumps(data)
Ответ №2:
-
Загрузите
json
строкуjson_data = json.loads(json_string)
-
Выполните итерацию по объекту и
append
"breakdown"
ключуfor item in json_data: for json_dict in item: json_dict["breakdown"].append({"type": "type3", "count": 4533})
-
Преобразуйте его обратно в
JSON
строкуjson_string = json.dumps(json_data)