我不确定以前是否有人问过这个问题,但我找不到相关的自定义映射。通常,它是直接的JSON到对象的1:1映射。
下面是我的示例:
class Test():
id: str
name: str
msg: str
data = [
{
"id": "12345",
"client": "test",
"msg": "random"
}, {
"id": "54321",
"client": "test-2",
"msg": "random-2"
}
]所以在上面我有一个JSON,我想直接将它转换成我在第一个类上拥有的对象。注意,来自JSON的“客户端”变成了name。
所以当我加载这个对象的时候,最终的输出是。
data = [
{
"id": "12345",
"name": "test",
"msg": "random"
}, {
"id": "54321",
"name": "test-2",
"msg": "random-2"
}
]发布于 2021-06-04 02:02:06
class Test():
def __init__(self, id, client, msg):
self.id = id
self.name = client
self.msg = msg
data = [
{
"id": "12345",
"client": "test",
"msg": "random"
}, {
"id": "54321",
"client": "test-2",
"msg": "random-2"
}
]
# unpack values from dict and pass in as arguments for Test.__init__()
objects = [Test(**item) for item in data] 发布于 2021-06-04 02:19:49
您也可以使用Pydantic来定义您的类,如下所示:
from pydantic import BaseModel
class User(BaseModel):
id: str
name: str
msg: str
def __init__(self, id: str, client: str, msg: str) -> None:
super().__init__(id=id, name=client, msg=msg)
users = [
{
'id': '12345',
'client': 'test',
'msg': 'random',
},
{
'id': '54321',
'client': 'test-2',
'msg': 'random-2',
}
]
objects = [User(**user) for user in users]
print(objects)
# Output
[
User(id='12345', name='test', msg='random'),
User(id='54321', name='test-2', msg='random-2')
]https://stackoverflow.com/questions/67826510
复制相似问题