0

如果我收到具有不同值的 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 损坏)

4

0 回答 0