如果我收到具有不同值的 JSON 字符串,我想转义双引号。这不起作用,因为如果我想遍历给定字段的值,我需要首先 json.loads(string) ,但这已经失败,因为它们是其中一个值中的误导性双引号。如果我遍历原始字符串,它会转义正确设置的双引号,然后再次失败。我将如何完成循环遍历这些值?
print("Test started...")
try:
import json
import cgi
form3 = cgi.FieldStorage()
print("cgi Fieldstorage loaded in form3...")
form2 = form3["json"].value
print("form 2 is now form3.value...")
print("loop now starting...")
for x in form2:
print("in loop...")
x = x.replace('"','\"')
print("dumped an item in form1...")
form1 = json.loads(form2)
print("form1 is being prepared with json.loads... ")
print("dumped form1 string looks like : " + json.dumps(form1))
# handeling JSON-Exceptions thrown by corrupted parameters
except (ValueError, KeyError):
import sys
print("Encoding Error")
sys.exit()
来自地址栏的示例输入:
http://localhost/script.py?json={"field":"value","field2":"value","field3":"val"ue"}
请注意,字段 3 中的值应转义如下:
http://localhost/script.py?json={"field":"value","field2":"value","field3":"val\"ue"}
如果字符串被转义而不通过 json.loads(string) 将其加载为 json 会发生什么
http://localhost/script.py?json={\"field\":\"value\",\"field2\":\"value\",\"field3\":\"val\"ue\"}
很明显会发生这种情况,但是这个字符串不能再通过 json.loads 加载,我也不能 json.loads 然后转义这些值,因为 json.loads 不会识别正确的 json 字符串(value3 损坏)