python - 解析 JSON 对象时,保留字作为数据类中的属性名称

标签 python json python-3.x python-dataclasses

当我在处理 ETL 管道时,我偶然发现了一个问题。我正在使用数据类 dataclass 来解析 JSON 对象。 JSON 对象的关键字之一是保留关键字。有没有办法解决这个问题:

from dataclasses import dataclass
import jsons

out = {"yield": 0.21}

@dataclass
class PriceObj:
    asOfDate: str
    price: float
    yield: float

jsons.load(out, PriceObj)

这显然会失败,因为 yield 被保留。查看数据类 field 定义,其中似乎没有任何内容可以提供帮助。

Go,允许定义JSON字段的名称,不知道dataclass中有这样的功能吗?

最佳答案

您可以使用 dataclasses_json 库使用不同的名称进行解码/编码,来自其 docs :

from dataclasses import dataclass, field

from dataclasses_json import config, dataclass_json

@dataclass_json
@dataclass
class Person:
    given_name: str = field(metadata=config(field_name="overriddenGivenName"))

Person(given_name="Alice")  # Person('Alice')
Person.from_json('{"overriddenGivenName": "Alice"}')  # Person('Alice')
Person('Alice').to_json()  # {"overriddenGivenName": "Alice"}

关于python - 解析 JSON 对象时,保留字作为数据类中的属性名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60074344/

相关文章:

python - 如何使用python检查带有命令行参数的进程是否正在运行

python - Emacs:使用 pdbtrack (python.el)

python - 从标签中获取数据(BeautifulSoup)

java - 使用 Jackson 序列化和反序列化原始 Json 字符串

python - 有没有办法将输入变成列表?

python - 类型错误 : unbound method decode() must be called with JSONDecoder instance as first argument (got PrintJson instance instead)

php - 如何在 PHP 中从 Google Maps Direction API 解码折线

json - 将 JSON 文件读入 Spark 数据集并从单独的 Map 添加列

python - 将 RGB 图像转换为黑白图像

python - 删除 RabbitMQ (AMQP) 服务器上队列中的消息