gpt4 book ai didi

python - 类型 'set' 的对象不可 JSON 序列化

转载 作者:行者123 更新时间:2023-12-01 01:31:43 35 4
gpt4 key购买 nike

我正在使用 python 3.6 并连接到 dynamodb 来获取数据。在行 json.dumps(item, indent=4, cls=DecimalEncoder) 上出现上述错误任何建议我做错了什么。

import json
import boto3
import decimal

dynamodb = boto3.resource('dynamodb')
table = dynamodb.Table('MY_TABLE')

class DecimalEncoder(json.JSONEncoder):
def default(self, o):
if isinstance(o, decimal.Decimal):
if o % 1 > 0:
return float(o)
else:
return int(o)
return super(DecimalEncoder, self).default(o)

def lambda_handler(event, context):
# TODO implement
category_id = event["queryStringParameters"]["id"]
response = table.get_item(
Key={
'category': category_id
}
)

item = response['Item']
return {
"isBase64Encoded": False,
"statusCode": '200',
"headers": {},
"body": json.dumps(item, indent=4, cls=DecimalEncoder)
}

最佳答案

JSON 不支持集合,因此您应该使 json.dumps 的客户解码器能够将集合转换为列表:

class DecimalEncoder(json.JSONEncoder):
def default(self, o):
if isinstance(o, set):
return list(o)
if isinstance(o, decimal.Decimal):
if o % 1 > 0:
return float(o)
else:
return int(o)
return super(DecimalEncoder, self).default(o)

关于python - 类型 'set' 的对象不可 JSON 序列化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52804324/

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