gpt4 book ai didi

python - 在将字符串用作 json 对象之前转义字符串的正确方法是什么

转载 作者:行者123 更新时间:2023-11-30 23:49:48 27 4
gpt4 key购买 nike

我必须从数据库值创建 JSON 字符串并将其再次推送回数据库。我的Python代码是:

json = "{"
for row in cursor_mysql:
#mainkey = row[0]
#name = row[1]
#value = row[2]
mainkey = """" " \n \ / """ #for testing only
name = """ {} " \r \t """ #for testing only
value = """ ' " \ & """ #for testing only
json += """"%s":{"name":"%s","value":"%s"},""" % (re.escape(mainkey), re.escape(name), re.escape(value))

json = json[:-1]
json += "}"
#print json
query = """UPDATE table SET json = '%s' WHERE id = '%d' RETURNING id""" % (json, rowId)
cursor_postgres.execute(query)
conn_postgres.commit()
insertId = cursor_postgres.fetchone()[0]

当周围没有恶意字符时,此代码非常有效。但是,当撒满非字母数字值时,它不起作用,如上面的测试用例所示。

进入我的数据库的错误 JSON 是:

{
"""
\ / ": {
"name": " {} "","value":"'" "
},
"""
\ / ": {
"name": " {} "","value":"'" "
}
}

如何清理字符串,以便反序列化时 json 输出与输入相同?

最佳答案

import json

data = json.dumps(BIG_STRUCTURE_GOES_HERE)
query = """UPDATE table SET json = %s WHERE id = %s RETURNING id"""
cursor_postgres.execute(query, (data, rowId))
conn_postgres.commit()

关于python - 在将字符串用作 json 对象之前转义字符串的正确方法是什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7512493/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com