python - REST API 中的 POST - JSON 无法序列化我的数据
问题描述
我正在尝试通过 REST API 发布一些数据。但是,使用以下代码,程序拒绝遵守(添加绒毛以提高可读性):
def Actions(self, imei, name):
global addAttribute
if addAttribute == True:
attributes = {"decoder.timezone":"Etc/GMT"}
else:
attributes = ""
url = "https://example.com/api/devices/"
data = {"name":name, "uniqueId":imei, "attributes":attributes}
print("data not transformed:")
print(data)
print()
data_json = json.dumps(data)
print("data transformed by json.dumps():")
print(data_json)
print()
test = requests.post(url, auth=('mylogin', 'pwd'), json=data_json)
print(test.content)
控制台说:
data not transformed:
{'name': 'Example 1', 'uniqueId': 'Example 1', 'attributes': {'decoder.timezone': 'Etc/GMT'}}
data transformed by json.dumps():
{"name": "Example 1", "uniqueId": "Example 1", "attributes": {"decoder.timezone": "Etc/GMT"}}
b'Cannot construct instance of `org.traccar.model.Device` (although at least one Creator exists): no String-argument constructor/factory method to deserialize from String value (\'{"name": "Example 1", "uniqueId": "Example 1", "attributes": {"decoder.timezone": "Etc/GMT"}}\')\n at [Source: (org.glassfish.jersey.message.internal.ReaderInterceptorExecutor$UnCloseableInputStream); line: 1, column: 1]'
也许我应该以不同的方式表达我的数据,而不是像字典一样?如果是这样,怎么做?
解决方案
根据requests
文档,该字段json
用于dict
对象,该字段data
用于string
对象。
您在 astring
的字段中传递 a dict
。你可能想做这样的事情:
data = {"name":name, "uniqueId":imei, "attributes":attributes}
data_json = json.dumps(data)
test = requests.post(url, auth=('mylogin', 'pwd'), data=data_json)
print(test.content)
或类似的东西:
data = {"name":name, "uniqueId":imei, "attributes":attributes}
test = requests.post(url, auth=('mylogin', 'pwd'), json=data)
print(test.content)
它们都应该工作,但您可能应该选择第二个,因为json.dump
它是在 post 请求中完成的操作。
推荐阅读
- javascript - JavaScript - getter 函数与构造函数 - 先执行哪个?
- css - 角度 2 在时间间隔内改变组件 - 组件轮播(不是图像)
- android - Google Play 商店报告安装在旧的/已弃用的 SDK 级别
- html - 通过 MailChimp 与“Gmail Append HTML”发送电子邮件
- javascript - 是否可以将组件作为字符串道具传递?(使用组件库)
- bash - Git Bash - 自上次合并以来的所有提交
- javascript - 使用php解析到另一个包含xml子节点的数组
- javascript - JavaScript - 我们应该使用 Observables 吗?还是承诺就足够了?
- android - 如何处理 Google Map Direction API 中的 0,0 标记错误?
- asp.net-core - 关于signalR dotnet core的问题