mch*_*ier 3 json node.js python-requests
我收到一个如下所示的 JSON 块(为简洁起见进行了编辑):
... "actions": [{"script": \"{\"inputs\": [], <LOTS MORE JSON>}"}]"
Run Code Online (Sandbox Code Playgroud)
本质上它是嵌套在另一个对象内的字符串。
当我使用 Chrome 中的高级 Rest 客户端将此 JSON 发送到我的 Node.js API 时,它会成功。然而,当我使用此 Python 代码发送它时:
headers={'content-type': 'application/json'}
newrsp = self.session.post("http://my-api", data=str(my_json), headers=headers)
Run Code Online (Sandbox Code Playgroud)
我收到
SyntaxError: Unexpected token i
Run Code Online (Sandbox Code Playgroud)
查看调用 JSON.parse 之前的主体,看来我的有效负载已被修改。而不是看起来像这样:
... "actions": [{"script": \"{\"inputs\": [], <LOTS MORE JSON>}"}]"''
Run Code Online (Sandbox Code Playgroud)
它看起来像这样:
... "actions": [{"script": "{"inputs": [], <LOTS MORE JSON>}"}]"
Run Code Online (Sandbox Code Playgroud)
从其他程序调用我的 API 可以正常工作,并且不会删除转义字符,因此我非常有信心这不是我的代码,但 Requests API 在发送我的 JSON 之前会以某种方式删除这些字符。
我绝对不是一个Pythonista……任何Python人都知道发生了什么(希望有一种方法可以告诉请求不要这样做)?
小智 7
如果您使用参数“data”,您应该自己转换 JSON:
jsonItem = json.dumps(dict(item))
req = requests.post('http://...', data=jsonItem)
Run Code Online (Sandbox Code Playgroud)
如果您使用参数“json”,您将委托转换:
req = requests.post('http://...', json=dict(item))
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
9313 次 |
| 最近记录: |