Добавление объекта json python

Рейтинг: -1Ответов: 2Опубликовано: 29.03.2023

Подскажите пожалуйста, как мне добавить json объект в файл при помощи python. Вот объект

      "name": "CeilingSkylight",
      "uniqueId": 14863.6865,
      "position": {
        "x": -121.896072,
        "y": -2.105801,
        "z": -0.7743931
      },
      "rotation": {
        "x": 0.9970698,
        "y": -1.63123222E-08,
        "z": -0.07649757,
        "w": 2.05165609E-08
      },
      "isKinematic": true,
      "instantiationData": null,
      "runtimeData": null
    }

Уточняю: открыть файл, добавить объект json(так что бы другие не удалились), закрыть файл

Ответы

▲ 4Принят

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

Верный порядок действий такой:

  1. открыть и прочитать файл (это будет последовательность символов)
  2. прочитанную последовательность с помощью json модуля сделать понятным для python словарем
  3. Изменить нужное значение(-я) в словаре
  4. Преобразовать словарь в формат json (для python это будет опять последовательность символов, грубо говоря строка)
  5. Полностью перезаписать файл
import json

# 1, 2
open with("your.json") as f:
    json_str = json.load(f)

# 3
json_str["name"] = "new_name"

# 4, 5
open with("your.json", "w") as f:
    json.dump(json_str, f)
▲ 1

используя библиотеку json

import json

data = {
    "name": "CeilingSkylight",
    "uniqueId": 14863.6865,
    "position": {
        "x": -121.896072,
        "y": -2.105801,
        "z": -0.7743931
    },
    "rotation": {
        "x": 0.9970698,
        "y": -1.63123222E-08,
        "z": -0.07649757,
        "w": 2.05165609E-08
    },
    "isKinematic": True,
    "instantiationData": None,
    "runtimeData": None
}

json_data = json.dumps(data, indent=4)
print(json_data)