当我在处理 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/