Python JSON 没有反斜杠的写作
Python JSON writing without backslashes
- 列表项
我有一个包含 2 个文件(oracle_1.sql 和 oracle_2.sql)的 'quad' 文件夹
和一个包含 'config.json' 文件的 'config' 文件夹。
我的代码如下:
import os, json
quadversion = ("develop-62")
x = os.listdir("quad/")
i=0
listscripts = []
while (len(x)) > i:
script = ('{"ignoreErrors": False, "script": "quad/lma/dba-tests/'+(quadversion)+'/scripts/'+(x[i])+'"}')
i+=1
listscripts.append(script)
with open('config/config.json', 'r+') as f:
data = json.load(f)
tmp = data['containers']['runtimeEnvironment']['data']['properties']['sqlScripts']['value']
data['containers']['runtimeEnvironment']['data']['properties']['sqlScripts']['value'] = listscripts
f.seek(0)
f.write(json.dumps(data, indent = 4, sort_keys=True))
f.truncate()
它在 JSON 文件上返回反斜杠 - 名为 "value" 的密钥:
{
"containers": {
"runtimeEnvironment": {
"data": {
"properties": {
"sqlScripts": {
"type": "SqlScripts",
"value": [
"{\"ignoreErrors\": False, \"script\": \"quad/lma/dba-tests/develop-62/scripts/oracle_1.sql\"}",
"{\"ignoreErrors\": False, \"script\": \"quad/lma/dba-tests/develop-62/scripts/oracle_2.sql\"}"
]
}
结果可能是这个键名为 "value":
"value": [
{"ignoreErrors": False, "script": "quad/lma/dba-tests/develop-62/scripts/oracle_1.sql"},
{"ignoreErrors": False, "script": "quad/lma/dba-tests/develop-62/scripts/oracle_2.sql"}
]
原因是您的 listscript
变量是 strings
的列表而不是字典列表。
您的 script
必须是字典:
while (len(x)) > i:
script = {"ignoreErrors": False, "script": "quad/lma/dba-tests/" + quadversion + "/scripts/" + x[i]}
i+=1
listscripts.append(script)
- 列表项
我有一个包含 2 个文件(oracle_1.sql 和 oracle_2.sql)的 'quad' 文件夹 和一个包含 'config.json' 文件的 'config' 文件夹。
我的代码如下:
import os, json
quadversion = ("develop-62")
x = os.listdir("quad/")
i=0
listscripts = []
while (len(x)) > i:
script = ('{"ignoreErrors": False, "script": "quad/lma/dba-tests/'+(quadversion)+'/scripts/'+(x[i])+'"}')
i+=1
listscripts.append(script)
with open('config/config.json', 'r+') as f:
data = json.load(f)
tmp = data['containers']['runtimeEnvironment']['data']['properties']['sqlScripts']['value']
data['containers']['runtimeEnvironment']['data']['properties']['sqlScripts']['value'] = listscripts
f.seek(0)
f.write(json.dumps(data, indent = 4, sort_keys=True))
f.truncate()
它在 JSON 文件上返回反斜杠 - 名为 "value" 的密钥:
{
"containers": {
"runtimeEnvironment": {
"data": {
"properties": {
"sqlScripts": {
"type": "SqlScripts",
"value": [
"{\"ignoreErrors\": False, \"script\": \"quad/lma/dba-tests/develop-62/scripts/oracle_1.sql\"}",
"{\"ignoreErrors\": False, \"script\": \"quad/lma/dba-tests/develop-62/scripts/oracle_2.sql\"}"
]
}
结果可能是这个键名为 "value":
"value": [
{"ignoreErrors": False, "script": "quad/lma/dba-tests/develop-62/scripts/oracle_1.sql"},
{"ignoreErrors": False, "script": "quad/lma/dba-tests/develop-62/scripts/oracle_2.sql"}
]
原因是您的 listscript
变量是 strings
的列表而不是字典列表。
您的 script
必须是字典:
while (len(x)) > i:
script = {"ignoreErrors": False, "script": "quad/lma/dba-tests/" + quadversion + "/scripts/" + x[i]}
i+=1
listscripts.append(script)