Задать вопрос
@Axel_1688

Как поменять данные в JSON не залезая в него через Python?

Есть Json с такой структурой
{
    "4870204395396": {
      "name": " A",
      "status": "400"
    }
{
    "4870214501022": {
      "name": " B",
      "status": "500"
    }
}

как можно изменить значение допустим "4870214501022" его "status" на 200 без индийских фокусов ?
  • Вопрос задан
  • 271 просмотр
Подписаться 1 Простой 3 комментария
Пригласить эксперта
Ответы на вопрос 1
Aetae
@Aetae
Тлен
Начнём с того, что именно такая структура - это не валидный json.
Если тебе приходится работать с индийскими данными - без индийских фокусов не обойтись.

Если ты ошибся в примере и там на самом деле валидный json, то тебе в любом случае придётся перезаписывать весь файл после изменения, т.к., увы, формат json никаким образом не выровнен по байтам, чтоб можно было менять значения в центре файла и не трогать иные.
Единственное что, если не хочется грузить весь файл в память сразу - можно воспользоваться библиотеками для потокового чтения-записи json.

P.S. Конечно, если ты уверен, что новое значение всегда будет в utf8 короче или равно по длине старому, то, в принципе, возможны и точечные изменения, однако это слишком частный случай - сомневаюсь, что где-то есть либа для подобного. Если очень хочется - не сложно будет адаптировать ту же потоковую либу для нахождения позиции в файле и использовать затем стандартные средства работы с файлами для точечной перезаписи, однако выигрыш тут слишком мал, ИМХО, чтоб так заморачиваться.
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Похожие вопросы
Goodt Екатеринбург
от 100 000 до 150 000 ₽
Selecty Москва
До 350 000 ₽
Data World Москва
от 180 000 до 210 000 ₽