JSON.loads 在龙卷风处理程序中调用时给出字符串输出
JSON.loads gives a string output when invoked in tornado handler
我正在将一些数据传递给调用 json.loads(request.body) 的龙卷风服务器处理程序
这是 request.body 的样子:
b'"{\"inputs\": {\"key1\": \"/9j/4QxgRXhpZgAATU0AKgAAAAgA....... sVf/2Q==\"}}"'
当我在此 request.body 上调用 json.loads 时,这就是输出的样子
payload = json.loads(request.body)
print(payload)
{"inputs": {"key1": "/9j/4QxgRXhpZgAATU.....rsVf/2Q=="}}
print(type(payload)) # <class 'str'>
payload2 = json.loads(payload)
print(type(payload2 )) # <class 'dict'>
我不确定为什么 json.loads 的输出是 str
这是我传递的请求正文
with open("ee", "rb") as image_file:
encoded_string = base64.b64encode(image_file.read())
x = {"inputs": {"key1": encoded_string.decode("utf-8")}}
<request_session>.post(<HOST>, json=json.dumps(x))
如何更改我的请求正文,以便在我的 request.body 上调用 json.loads 时,我会收到字典
处理程序内置在 tornado 中
您收到的数据json编码了两次。所以你需要在服务器上解码两次才能得到字典。
问题在于您从客户端发送数据的方式。如果 requests
的 see the docs,json
参数应该是 json 可序列化对象,而不是已经序列化的对象。
这意味着 requests
也在再次编码您的 json 数据。
尝试在没有 json 编码的情况下传递字典:
<request_session>.post(<HOST>, json=x)
我正在将一些数据传递给调用 json.loads(request.body) 的龙卷风服务器处理程序 这是 request.body 的样子:
b'"{\"inputs\": {\"key1\": \"/9j/4QxgRXhpZgAATU0AKgAAAAgA....... sVf/2Q==\"}}"'
当我在此 request.body 上调用 json.loads 时,这就是输出的样子
payload = json.loads(request.body)
print(payload)
{"inputs": {"key1": "/9j/4QxgRXhpZgAATU.....rsVf/2Q=="}}
print(type(payload)) # <class 'str'>
payload2 = json.loads(payload)
print(type(payload2 )) # <class 'dict'>
我不确定为什么 json.loads 的输出是 str
这是我传递的请求正文
with open("ee", "rb") as image_file:
encoded_string = base64.b64encode(image_file.read())
x = {"inputs": {"key1": encoded_string.decode("utf-8")}}
<request_session>.post(<HOST>, json=json.dumps(x))
如何更改我的请求正文,以便在我的 request.body 上调用 json.loads 时,我会收到字典
处理程序内置在 tornado 中
您收到的数据json编码了两次。所以你需要在服务器上解码两次才能得到字典。
问题在于您从客户端发送数据的方式。如果 requests
的 see the docs,json
参数应该是 json 可序列化对象,而不是已经序列化的对象。
这意味着 requests
也在再次编码您的 json 数据。
尝试在没有 json 编码的情况下传递字典:
<request_session>.post(<HOST>, json=x)