Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/296.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
我们可以像Jackson中的对象映射器那样将json响应映射到python对象吗?_Python_Json_Python 3.x - Fatal编程技术网

我们可以像Jackson中的对象映射器那样将json响应映射到python对象吗?

我们可以像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

我是python新手,尝试将json响应映射到python对象,就像我们使用jackson库在Java中所做的那样,这样我们就可以使用Java对象了

示例json:-

{
    "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。
**
将python
dict
解包为关键字参数。所以
json={“name”:“John”,“age”:31,“city”:“newyork”}
然后
PersonDetails(**json)
大致翻译成
PersonDetails(name=“John”,age=31,city=“newyork”)