使用换行符将json转换为字符串,并在python中进行转义



如何使用python转换以下有效载荷:

{
"abc": {
"i": "1212",
"j": "add"
}
}

"{nn    "abc": {n        "i": "1212",n        "j": "add"n    }n}"

您可以使用json.dumpjson.dumps的可选indent参数来向生成的字符串添加换行符和缩进。

>>> import json
>>> payload = {
...     "assessmentstatus": {
...         "id": "D37002079003",
...         "value": "In-Progress"
...     }
... }
...
>>> json.dumps(payload)
'{"assessmentstatus": {"id": "D37002079003", "value": "In-Progress"}}'
>>> json.dumps(payload, indent=0)
'{n"assessmentstatus": {n"id": "D37002079003",n"value": "In-Progress"n}n}'
>>> json.dumps(payload, indent=2)
'{n  "assessmentstatus": {n    "id": "D37002079003",n    "value": "In-Progress"n  }n}'

正确显示空白:

>>> print(json.dumps(payload, indent=2))
{
"assessmentstatus": {
"id": "D37002079003",
"value": "In-Progress"
}
}

似乎您实际上希望字符串包括封闭的",并对字符串中的所有"进行转义。使用Python的repr会非常棘手,因为它总是试图使用'"作为外引号,这样引号就不必转义。

不过,似乎有效的方法是再次json.dumpsJSON字符串

>>> json.dumps(json.dumps(payload, indent=2))
'"{\n  \"assessmentstatus\": {\n    \"id\": \"D37002079003\",\n    \"value\": \"In-Progress\"\n  }\n}"'
>>> print(json.dumps(json.dumps(payload, indent=2)))
"{n  "assessmentstatus": {n    "id": "D37002079003",n    "value": "In-Progress"n  }n}"

我假设它在文件中有换行符

with open('file.json') as f: data = json.load(f)

然后用数据做你想做的事

您可以将数据保存到类似的JSON格式的文件中

import json
data  = {
"assessmentstatus": {
"id": "D37002079003",
"value": "In-Progress"
}
}
with open("file.txt", "w") as file:
json.dump(data, file, indent=4)

要检索这些数据,您可以进行

import json
with open("file.txt") as file:
data = json.load(file)
print(data)

JSON是一种以字符串格式存储数据并能够解析数据以将其转换为实际数据的方法。

因此,尝试自己转换"{nn "assessmentstatus": {n "id": "D37002079003",n "value": "In-Progress"n }n}"是错误的做法,因为JSON非常擅长这样做。

最新更新