2012-07-21 20 views
6

मानक पायथन जेसन मॉड्यूल केवल जेसन स्ट्रिंग को श्रम संरचनाओं में परिवर्तित कर सकता है।क्या कोई अजगर जेसन लाइब्रेरी जेसन को मॉडल ऑब्जेक्ट्स में परिवर्तित कर सकती है, जैसे Google-gson?

लेकिन मैं जेसन को अपने "माता-पिता-बच्चे" संबंधों के साथ मॉडल ऑब्जेक्ट स्ट्रक्चर में परिवर्तित करना पसंद करता हूं।

मैं एंड्रॉइड ऐप्स में Google-जीसन का उपयोग करता हूं लेकिन यह नहीं पता कि कौन सी पायथन लाइब्रेरी यह कर सकती है।

उत्तर

4

आप json मॉड्यूल एक dict का निर्माण दे सकता है और फिर एक का उपयोग object_hooktransform the dict into an object करने के लिए, कुछ इस तरह:

>>> import json 
>>> 
>>> class Person(object): 
...  firstName = "" 
...  lastName = "" 
... 
>>> 
>>> def as_person(d): 
...  p = Person() 
...  p.__dict__.update(d) 
...  return p 
... 
>>> 
>>> s = '{ "firstName" : "John", "lastName" : "Smith" }' 
>>> o = json.loads(s, object_hook=as_person) 
>>> 
>>> type(o) 
<class '__main__.Person'> 
>>> 
>>> o.firstName 
u'John' 
>>> 
>>> o.lastName 
u'Smith' 
>>> 
+0

टीटी object_hook के साथ काम करता है। धन्यवाद @ बोगदान। –

+0

मॉडल में मॉडल के बारे में कैसे –

1

आप इसे json के साथ काम करने के लिए अपनी खुद की serializer लिख सकता है, लेकिन क्यों pyyaml जो यह बॉक्स से बाहर का समर्थन करता है का उपयोग नहीं:

>>> import yaml 
>>> class Foo: 
... def bar(self): 
...  print 'Hello I am bar' 
... def zoo(self,i): 
...  self.i = i 
...  print "Eye is ",i 
... 
>>> f = Foo() 
>>> f.zoo(2) 
Eye is 2 
>>> s = yaml.dump(f) 
>>> f2 = yaml.load(s) 
>>> f2.zoo(3) 
Eye is 3 
>>> s 
'!!python/object:__main__.Foo {i: 2}\n' 
>>> f2 = yaml.load(s) 
>>> f2.i 
2 
+0

अपने सुझाव के लिए लेकिन पिछली संगतता के कारण मैं JSON उपयोग करने की आवश्यकता के लिए धन्यवाद। –

+0

http://yamltojson.com/ – dg123

संबंधित मुद्दे