如果我收到一个具有不同值的JSON字符串,我想要转义双引号。 这不起作用,因为如果我想循环遍历给定字段的值,我首先需要json.loads(字符串),但这已经失败,因为它们是其中一个值中的误导性双引号。 如果我遍历原始字符串,它会转义正确设置的双引号,并再次失败。 如何才能完成循环值?
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(字符串)将其作为json加载,会发生什么?
http://localhost/script.py?json={\"field\":\"value\",\"field2\":\"value\",\"field3\":\"val\"ue\"}
很明显,这种情况发生了,但是这个字符串不能再通过json.loads加载了
我也不能json.loads然后转义值,因为json.loads将无法识别正确的json字符串(value3已损坏)