python3 - 在使用 (unirest) 响应数据后解析 json 时出现问题

python3 - problem with parsing json after response data using (unirest)

我正在使用 (Python)Unirest 制作 HTTPSConnection 并且响应具有 "\\n 这样的字符,所以我硬编码了我的 python 代码,最后我在控制台上使用 sys.stderr.write(data2)

得到了正确的响应,没有任何字符
    @router.get("/data", status_code=status.HTTP_200_OK)
    async def data_detail(type: str ):
        try:
            conn = http.client.HTTPSConnection("example.com")
            conn.request("GET", "/test.php?type="+type)
            res = conn.getresponse()
            data = res.read()
            data2 = data.decode("utf-8")
            data2 = data2[1:-1]
            data2 = data2.replace("\n", '')
            data2 = data2.replace("\", '')

            res = {
                "status"    :   "OK" ,
                "result"    :   data2
                }
            return JSONResponse(res)
        except Exception as e:
            raise HTTPException(status_code=400, detail="Error")

现在当我 return data 使用反斜杠 \ 再次返回数据响应时

我从第三方收到的数据是:

"{\"list1\":[{\"one\":\"one\",\"tow\":\"tow\",\"three\":\"three\"},{\"test1\":\"test1\",\"test2\":\"test2\",\"test3\":\"test3\"},],\"list2\":[]}\n"

替换字符后我在系统控制台上得到了这个

{"list1":[{"one":"one","tow":"tow","three":"three"},{"test1":"test1","test2":"test2","test3":"test3"}],"list2":[]}

但是当我将此数据添加到最终 json 响应时,反斜杠再次返回到输出并且所有数据都作为一个值存储在 result

这个问题的任何解决方案

您永远不会替换单个反斜杠。你需要加一行吗

data2 = data2.replace("\", '')

解码 JSON.

首先import json然后尝试替换:

data2 = data2[1:-1]
data2 = data2.replace("\n", '')
data2 = data2.replace("\", '')

来自

data2 = json.loads(data2)

在此之后,您最终的 json 响应将被正确构建。

您应该使用 json.dumps(data2) 将此数据打印到控制台。通常,使用 json.dumps 将 python 数据打印为 JSON.

有关处理 python 中的 JSON 的更多帮助,请参阅 https://docs.python.org/3/library/json.html