zensimilia
@zensimilia

Как изменить структуру json ответа на клиенте?

Есть сервис, который возвращает по API json в таком формате:

response

{
  "result": [
    {
      "Columns": [
        {
          "Title": "id"
        },
        {
          "Title": "Name"
        },
        {
          "Title": "mapScale"
        },
        {
          "Title": "code"
        }
      ],
      "Data": [
        [
          "4",
          "Краснодар",
          "11",
          "krasnodar"
        ],
        [
          "7",
          "Анапа",
          "14",
          "anapa"
        ],
        [
          "14",
          "Геленджик",
          "14",
          "gelendzhik"
        ],
        [
          "15",
          "Новороссийск",
          "10",
          "novorossiysk"
        ],
        [
          "16",
          "Ростов-на-Дону",
          "12",
          "rostov"
        ],
        [
          "17",
          "Сочи",
          "15",
          "sochi"
        ],
        [
          "24",
          "Афипский",
          "10",
          ""
        ],
        [
          "67",
          "Майкоп",
          "10",
          "maykop"
        ]
      ],
      "totalRow": 255
    }
  ]
}


С такой структурой не очень удобно работать, когда идеально было бы получать:

{
  "data": [
    {
      "id" : "187",
      "Name": "Москва",
      "mapScale": "4",
      "code": "moscow"
    },
    {
      ...
    },
    "totalRow": 255
  ]
}


К сожалению, не имею возможности изменить формат на самом сервисе который отдает ответ. Данных может приходить большой объем.

Подскажите, каким способом лучше обработать этот json чтобы привести в нормальный вид или может быть какую-нибудь библиотеку (python/node), которая позволяет это делать легко.
  • Вопрос задан
  • 195 просмотров
Решения вопроса 1
AlexandrovRoman
@AlexandrovRoman
Python backend developer
def f_json(json):
    res = json["result"][0]
    cols = [list(col.values())[0] for col in res["Columns"]]
    return {"data": [dict(zip(cols, row)) for row in res["Data"]]}


Ну примерно так это делается
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 2
afishr
@afishr
make const not var
Как и отметили в комментариях, это делается просто циклом. Я накидал тут вариантик, может вам поможет разобраться.
Ответ написан
Комментировать
LazyTalent
@LazyTalent
Data Engineer, Freelancer
Если данных много, то я бы использовал pandas
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы