Отредактируйте файл JSON, сохраняя его должным образом отформатированный (например, отступ) - PullRequest
0 голосов
/ 16 февраля 2020

У меня есть файл JSON в формате ниже, и я хотел бы, чтобы метод легко редактировал данные в двух наборах данных.

Имея таблицы для вставки (по 2 столбца в каждой) в файл .txt или .xls, как я могу легко заменить две таблицы данных [x, x].

Я пытался сделать это с помощью функций jsondecode и jsonencode в MATLAB, но когда я перезаписываю в файл. json, все изменения и отступы теряются. Как (и с каким программным обеспечением) я могу сделать это, чтобы правильно отформатировать его?

{
  "Compounds" :
      [ "frutafresca" ],
  "Property 1" : 
      {
      "Scheme" : "Test1"  ,
      "StdValue"  : 0.01                 ,
      "Data":
          [
            [     353.15  ,   108320   ],
            [   503.15  ,   5120000  ],
            [   513.15  ,   6071400  ]
          ]
      },
  "Property 2" : 
      {
      "Scheme" : "Test 1"  ,
      "StdValue"  : 0.01                 ,
      "Data":
          [
            [     273.15  ,   806.25 ],
            [   283.15  ,   797.92 ],
            [   293.15  ,   789.39 ],
            [   453.15  ,   598.39 ],
            [   463.15  ,   578.21 ],
            [   473.15  ,   556.79 ]
          ]
      }
}

1 Ответ

2 голосов
/ 16 февраля 2020

Есть ли причина не использовать стандартный модуль lib json?

json module

Из документов :

json.dump(obj, fp, *, skipkeys=False, ensure_ascii=True, check_circular=True, allow_nan=True, cls=None, indent=None, separators=None, default=None, sort_keys=False, **kw)

Если отступ является неотрицательным целым числом или строкой, то элементы массива и члены объекта JSON будут напечатаны с таким уровнем отступа. Уровень отступа 0, отрицательный или "" будет вставлять только новые строки. Ни один (по умолчанию) выбирает наиболее компактное представление. Использование отступа с положительным целым числом, равным множеству пробелов на уровень . Если отступ является строкой (например, \ t), эта строка используется для отступа каждого уровня.

import json

data = None
with open('data.json', 'r') as _file:
    data = json.load(_file)
assert data is not None


## do your changes to data dict


with open('data.json', 'w') as _file:
    json.dump(data, _file, indent=2)    ## indent output with 2 spaces per level

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...