@Axel_1688

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

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

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

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

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

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

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