Добавление значений в JSON в Python2.7

#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:

  1. Загрузите json строку

     json_data = json.loads(json_string)
      
  2. Выполните итерацию по объекту и append "breakdown" ключу

     for item in json_data:
        for json_dict in item:
            json_dict["breakdown"].append({"type": "type3", "count": 4533})
      
  3. Преобразуйте его обратно в JSON строку

     json_string = json.dumps(json_data)