2017-03-04 106 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

相關問題