@DmitryNs

Замена строк в json?

У меня есть один json

{
    "city": "Лондон",
    "airports": [
      {
        "name": "Хитроу",
        "city": "Лондон",
        "country": "Великобритания",
        "iata_code": "ЛХР",
      }
}


и другой

{
    "city": "London",
    "airports": [
      {
        "name": "Heathrow",
        "city": "London",
        "country": "United Kingdom",
        "iata_code": "LHR",
      }


Я хочу скопировать все iata_code из второго json и вставить в первый. В общем проблема в том, что в первом json они на русском, а нужно на английском. И я хочу их как-то заменить. Есть какой то способ как это сделать? Спасибо!
  • Вопрос задан
  • 76 просмотров
Решения вопроса 1
xotkot
@xotkot
хорошо есть и хорошо весьма
это можно сделать довольно легко с помощью gron
допустим есть два сопоставимых файла 1.json и 2.json
необходимо заменить значение ключа iata_code в первом файле на значения из второго файла.
1.json
{
    "json": 1,
    "city": "Лондон",
    "airports": [
      {
        "name": "Хитроу",
        "city": "Лондон",
        "country": "Великобритания",
        "iata_code": "ЛХР"
      },
      {
        "name": "Хитроу2",
        "city": "Лондон2",
        "country": "Великобритания2",
        "iata_code": "ЛХР2"
      }
    ]
}

2.json
{
  "json": 2,
  "city": "London",
  "airports": [
    {
      "name": "Heathrow",
      "city": "London",
      "country": "United Kingdom",
      "iata_code": "LHR"
    },
    {
      "name": "Heathrow2",
      "city": "London2",
      "country": "United Kingdom2",
      "iata_code": "LHR2"
    }
  ]
}


1) удаляем все значения iata_code из первого файла и записываем в промежуточный файл 3.gron
gron 1.json | grep -v "iata_code" > 3.gron

2) во втором файле оставляем только значения iata_code и добавляем в промежуточный файл 3.gron
gron 2.json | grep "iata_code" >> 3.gron

3) преобразовываем промежуточный файл в json
gron --ungron 3.gron > 3.json

результат
3.json
{
  "airports": [
    {
      "city": "Лондон",
      "country": "Великобритания",
      "iata_code": "LHR",
      "name": "Хитроу"
    },
    {
      "city": "Лондон2",
      "country": "Великобритания2",
      "iata_code": "LHR2",
      "name": "Хитроу2"
    }
  ],
  "city": "Лондон",
  "json": 1
}
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
@Everything_is_bad
Открыть учебник твоего ЯП и почитать в нем, как работать со структурами данных.
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы