2017-03-04 110 views
1

这是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)

谢谢。

+0

它已经解决:http://stackoverflow.com/questions

,如果它存在于JSON对象,也解决了使用任何缺少的属性的愿望下面的例子将给予每个属性的值/ 15476983/deserialize-a-json-string-to-an-object-in-python –

+1

[反序列化一个json字符串到一个python对象](http://stackoverflow.com/questions/15476983/deserialize- a-json-string-to-an-object-in-python) – Arman

+0

我想匹配所有json项目,就像个人一样。语言是None from this json {“name”:“david”,“age”:14,“gender”:“male”} – ambitiousdh

回答

1

您可以将其与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

相关问题