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。
我正在使用 (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。