我有一个Decimal('3.9')对象的一部分,并希望将其编码为一个看起来像的JSON字符串{'x': 3.9}.我不关心客户端的精度,所以浮动很好.
是否有一种很好的方法来序列化这个?JSONDecoder不接受Decimal对象,并且事先转换为float会产生{'x': 3.8999999999999999}错误,并且会大大浪费带宽.
从Python 3.7开始,有一种称为数据类的东西:
from dataclasses import dataclass
@dataclass
class Foo:
x: str
Run Code Online (Sandbox Code Playgroud)
但是,以下失败:
>>> import json
>>> foo = Foo(x="bar")
>>> json.dumps(foo)
TypeError: Object of type Foo is not JSON serializable
Run Code Online (Sandbox Code Playgroud)
如何将json.dumps()编码实例Foo转换为json 对象?
我正在学习 Python 和 aws。
我想要的是从 JSON 响应中提取值。此代码适用于不包含日期值的 JSON 响应,但在这种情况下,响应包含日期值。
这是我的代码:
import datetime
from datetime import date, datetime
import boto3
import json
client = boto3.client('lex-models')
response = client.get_utterances_view(
botName='CreateServicesBot',
botVersions=[
'$LATEST',
],
statusType='Missed'
)
with open('/tmp/output.json', 'w') as data:
json.dump(response,data)
with open('/tmp/output.json') as f:
data = json.load(f)
ustr=data["utteranceString"]
print ustr
Run Code Online (Sandbox Code Playgroud)
我收到此错误:
TypeError: datetime.datetime(2018, 6, 7, 9, 44, 38, 146000, tzinfo=tzlocal()) is not JSON serializable
有人知道解决方案吗?谢谢