thi*_*nck 2 python python-dataclasses
我正在做一个项目来了解有关使用 Python 的更多信息dataclasses。具体来说,我试图将 API 响应表示为一个dataclass对象。但是,由于 API 响应的结构,我遇到了一个问题。
以下是 API 的响应示例:
{
"@identifier": "example",
"@name": "John Doe",
}
Run Code Online (Sandbox Code Playgroud)
有些字段的名称中包含特殊字符。这意味着我无法直接映射 my 的属性dataclass,因为@属性名称中不允许使用特殊字符 ( SyntaxError)。
有没有办法为我的属性定义别名dataclass,以便我可以将 API 响应直接映射到dataclass对象?或者是否有必要先清理响应?
有dataclasses-json,它允许您为属性添加别名:
from dataclasses import dataclass, field
from dataclasses_json import config, dataclass_json
@dataclass_json
@dataclass
class Person:
magic_name: str = field(metadata=config(field_name="@name"))
magic_id: str = field(metadata=config(field_name="@identifier"))
p = Person.from_json('{"@name": "John Doe", "@identifier": "example"}')
print(p.magic_name)
print(p.to_json())
Run Code Online (Sandbox Code Playgroud)
出去:
John Doe
{"@name": "John Doe", "@identifier": "example"}
Run Code Online (Sandbox Code Playgroud)