我可以反序列化JSON来如C#Newtonsoft类在Python
问题描述:
这是JSON我可以反序列化JSON来如C#Newtonsoft类在Python
{"name":"david","age":14,"gender":"male"}
这是蟒蛇类
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
如果存在直接映射期望的,这将要求每个可能的对象的显式映射。
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
+0
然后我想再次序列化person对象, 和json包含“语言”项目。 – ambitiousdh
+0
谢谢!有用 – ambitiousdh
它已经解决:http://stackoverflow.com/questions
,如果它存在于JSON对象,也解决了使用任何缺少的属性的愿望下面的例子将给予每个属性的值/ 15476983/deserialize-a-json-string-to-an-object-in-python –
[反序列化一个json字符串到一个python对象](http://stackoverflow.com/questions/15476983/deserialize- a-json-string-to-an-object-in-python) – Arman
我想匹配所有json项目,就像个人一样。语言是None from this json {“name”:“david”,“age”:14,“gender”:“male”} – ambitiousdh