gpt4 book ai didi

python - 在请求库中处理 Decimal 到 Json

转载 作者:行者123 更新时间:2023-12-02 21:03:37 25 4
gpt4 key购买 nike

我正在尝试将发布数据发送到需要采用 json 格式的 api。如果请求 header 没有 Content-type: application-json请求失败,我得到 HTTPError: 415 Client Error: Unsupported Media Type for url

但是,如果我使用内置的 json 解析器,请求似乎只会添加到此 header 中。尽管文档似乎表明以下内容是等效的:

>>> r = requests.post(url, data=json.dumps(payload))

>>> r = requests.post(url, json=payload)

这意味着我需要使用内置的 json 解析器(或手动添加 Content-type header )。

但是我的帖子数据有几个 Decimal 字段(来自通过 json.loads(response.text, parse_float=decimal.Decimal) 转换的 api,保存在 django DecimalField 中),当使用内置请求解析器时会出现错误:

TypeError: Decimal('1560.35') is not JSON serialisable

有没有办法可以使用不同的 json 解析器来处理请求(例如处理小数的 simplejson)并仍然指定内容类型。

最佳答案

可以通过传递自定义函数来序列化小数。

def decimal_default(obj):
if isinstance(obj, Decimal):
return str(obj)
raise TypeError


data = json.dumps(payload, default=decimal_default)

response = requests.post(
url=url,
data=data,
headers={
'Content-type': 'application/json',
}
)

关于python - 在请求库中处理 Decimal 到 Json,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37136928/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com