我可以将 Json 反序列化为 Python 中的 C# Newtonsoft 类吗

2024-03-06

这是json

{"name":"david","age":14,"gender":"male"}

这是Python类

class Person:
    def __init__(self):
        self.name = None
        self.age = None
        self.gener = None
        self.language = None

这是代码

#deserialize func~~~~~
print person.name #prints david
print person.age #prints 14
print person.gender #prints male
print person.language #prints "None"

我可以将 Json 反序列化为 Python 中的类吗(如 C# Newtonsoft)

谢谢。


您可以将它与json.loads()方法。您还需要确保您的 JSON 是一个字符串,而不仅仅是声明为内联。

这是一个示例程序:

import json

js = '{"name":"david","age":14,"gender":"male"}'

class Person:
    def __init__(self, json_def):
        self.__dict__ = json.loads(json_def)

person = Person(js)

print person.name
print person.age
print person.gender

不过,只是一个注释。当您尝试使用print person.language你会得到一个错误,因为它在类中不存在。

EDIT

如果需要直接映射,则需要对每个可能的对象进行显式映射。

以下示例将为每个属性提供一个值(如果它存在于 JSON 对象中),并且还解决了使用任何缺失属性的需求:

import json

js = '{"name":"david","age":14,"gender":"male"}'

class Person(object):
    def __init__(self, json_def):
        s = json.loads(json_def)
        self.name = None if 'name' not in s else s['name']
        self.age = None if 'age' not in s else s['age']
        self.gender = None if 'gender' not in s else s['gender']
        self.language = None if 'language' not in s else s['language']

person = Person(js)

print person.name
print person.age
print person.gender
print person.language
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

我可以将 Json 反序列化为 Python 中的 C# Newtonsoft 类吗 的相关文章

随机推荐