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

Reserved word as an attribute name in a dataclass when parsing a JSON object

我在处理 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 定义,其中似乎没有任何帮助。

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

您可以使用来自 docs:

dataclasses_json 库的不同名称进行解码/编码
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"}