您的位置:首页 > 编程语言 > Python开发

关于Python中的json

2014-03-19 16:13 561 查看
import json

class Person( object ):
def __init__( self, name, age ):
self.name = name
self.age = age

def __repr__( self ):
return 'class %s, name: %s, age: %s'%( self.__class__.__name__, self.name, self.age )

a = Person( 'Pandora', 13 )

def class_to_json( cls ):
d = {}
d['__class__'] = cls.__class__.__name__
d['__module__'] = cls.__module__
d.update( cls.__dict__ )
return d

dict_obj = class_to_json( a )
print dict_obj
print 'Type: ', type( dict_obj )
json_obj = json.dumps( dict_obj )
print json_obj
print 'Type: ', type( json_obj )

def json_to_class( jsonobj ):
if '__class__' in jsonobj:
class_name = jsonobj.pop( '__class__' )
module_name = jsonobj.pop( '__module__' )
module = __import__( module_name )
cls = getattr( module, class_name )
args = dict( ( key.encode( 'ascii' ), value ) for key, value in jsonobj.items() )
instance = cls( **args )
else:
instance = d
return list

class_obj = json_to_class( dict_obj )
print class_obj
print 'Type: ', type( class_obj )

linesep = '-' * 100
print linesep

class JsonEncoder( json.JSONEncoder ):
def default( self, obj ):
d = {}
d['__class__'] = obj.__class__.__name__
d['__module__'] = obj.__module__
d.update( obj.__dict__ )
return d

class JsonDecoder( json.JSONDecoder ):
def __init__( self ):
json.JSONDecoder.__init__( self, object_hook = self.json_to_class )

def json_to_class( self, json_obj ):
if '__class__' in json_obj:
class_name = json_obj.pop( '__class__' )
module_name = json_obj.pop( '__module__' )
module = __import__( module_name )
cls = getattr( module, class_name )
args = dict( ( key.encode( 'ascii' ), value ) for key, value in json_obj.items()  )
instance = cls( **args )
else:
instance = json_obj
return instance

json_obj = JsonEncoder().encode( a )
print json_obj
print 'Type: ', type( json_obj )
class_obj = JsonDecoder().decode( json_obj )
print class_obj
print 'Type: ', type( class_obj )


 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: