My.json содержит:

{"something": [{"a": "b", "c": "", "d": ""}]}

AppendJson - это строка с чистым Json:

{"a": "b", "b": "", "a": ""}

Нежелательный результат:

{"something": [{"a": "b", "a": "", "b": ""}, {"a": "b", "b": "", "a": ""}, "{\\"a\\": \\"1\\", \\"a\\": \\"a\\", \\"b\\": \\"\\"}"]}

При этом должно быть:

{"something": [{"a": "b", "a": "", "b": ""}, {"a": "b", "b": "", "a": ""}, {"a": "1", "a": "a", "b": ""}]}

Используя json.dump, который запускается только один раз во всем скрипте, следующий код (appendjson передается в качестве параметра в виде строки с чистым json):

with open('my.json', 'r') as file:
   data = file.read()
myjson = json.loads(data)
myjson['something'].append(appendJson)
with open('my.json', 'w') as outfile:
   json.dump(myjson, outfile)

Выводит с большим количеством escape-символов и "". Как избежать ненужных кавычек, связанных с json.dump, или как сохранить это в файл без ошибок "cannot save dict into file"?

Цель состоит в том, чтобы внутри файла был чистый json, без каких-либо \\ "" над элементами моего списка, как вы видите ниже. Итак, как этого избежать в моем случае ?: {"something": [{"a": "b", "a": "", "b": ""}, {"a": "b", " b ":" "," a ":" "}," {\ "a \": \ "1 \", \ "a \": \ "a \", \ "b \": \ "\" } "]}

0
kol23 13 Окт 2020 в 17:54

2 ответа

Лучший ответ

Я решил свою проблему с newjson=[x.strip() for x in newjson] сразу после прочтения файла.

0
kol23 18 Ноя 2020 в 16:31

Что такое appendJson? Если это уже JSON, то повторный вызов json.dump для него вызовет дополнительные кавычки и escape-символы, которые вы упомянули. Убедитесь, что вы сериализуете данные только один раз.

>>> python_dict = {"a": "A","b":"B"}
>>> json_string = json.dumps(python_dict)
>>> json_string
'{"a": "A", "b": "B"}'
>>> double_json = json.dumps(json_string)
>>> double_json
'"{\\"a\\": \\"A\\", \\"b\\": \\"B\\"}"'
1
mattficke 13 Окт 2020 в 15:10