我们可以像Jackson中的对象映射器那样将json响应映射到python对象吗?
我是python新手,尝试将json响应映射到python对象,就像我们使用jackson库在Java中所做的那样,这样我们就可以使用Java对象了 示例json:-我们可以像Jackson中的对象映射器那样将json响应映射到python对象吗?,python,json,python-3.x,Python,Json,Python 3.x,我是python新手,尝试将json响应映射到python对象,就像我们使用jackson库在Java中所做的那样,这样我们就可以使用Java对象了 示例json:- { "name":"John", "age": 31, "city": "New York" } 类来映射这些参数 class PersonDetails: name: str age: i
{
"name":"John",
"age": 31,
"city": "New York"
}
类来映射这些参数
class PersonDetails:
name: str
age: int
city: str
def __init__(self, name: str, age: int, city: str) -> None:
self.name = name
self.age = age
self.city = city
def get_age(self):
return self.age
def set_age(self, age):
self.age = age
def get_name(self):
return self.name
def set_name(self, name):
self.name = name
def get_city(self):
return self.city
def set_city(self, city):
self.city = city
并希望将json映射到这个personDetails类
下面的代码是用来解析json的,我在jsonConverted变量中获取值,但我想使用PersonDetails类,这样我就可以使用getter和setter获取值,就像在Java中使用jackson库一样
responseData= json.dumps(response.json())
jsonConverted= json.loads(responseData, object_hook=lambda d: SimpleNamespace(**d))
print(jsonConverted.name, jsonConverted.age, jsonConverted.city)
有可能做到这一点吗?
PersonDetails(**json.loads(responseData))
?顺便说一句,您确实应该研究python属性,而不是手动设置自己的getter和setter。**
将pythondict
解包为关键字参数。所以json={“name”:“John”,“age”:31,“city”:“newyork”}
然后PersonDetails(**json)
大致翻译成PersonDetails(name=“John”,age=31,city=“newyork”)
。