之前已經實現了python: json串反序列化為自定義類物件,這次來實現了json的序列化。
測試**和結果如下:
importjson.jsontool
class
score:
math =0
chinese =0
class
book:
name = ''
type = ''
class
student:
id = ''
name = ''
score =score()
books =[book()]
student =student()
json_data = ', '
\
'"books":[, '\
']}
'json.jsontool.json_deserialize(json_data, student)
(student.name)
(student.score.math)
print(student.books[1].name)
student_str =json.jsontool.json_serialize(student)
(student_str)
input(
"\n按回車鍵退出。
")
執行結果:
kid100the little prince
, ], "
id": "
123", "
name
": "
kid", "
score
": }
按回車鍵退出。
實現**如下:
defjson_serialize(obj):
obj_dic =class2dic(obj)
return
json.dumps(obj_dic)
defclass2dic(obj):
obj_dic = obj.__dict__
for key in
obj_dic.keys():
value =obj_dic[key]
obj_dic[key] =value2py_data(value)
return
obj_dic
defvalue2py_data(value):
if str(type(value)).__contains__('.'
):
#value 為自定義類
value =class2dic(value)
elif str(type(value)) == "":
#value 為列表
for index in range(0, value.__len__
()):
value[index] =value2py_data(value[index])
return value
自定義序列化物件
很多時候,我們需要將物件序列化成字串儲存到記憶體 磁碟或者 page.viewstate 中。基於種種原因,我們希望序列化結果盡可能小,盡可能簡單,即便用其他的方法 比如正規表示式 也能解析出資料。binaryformatter 的結果轉換成字串 或者base64 長度太大,而 xmlseriali...
qt序列化自定義物件 Qt序列化
class painting public painting painting const qstring title,const qstring artist,int year qstring title const private qstring mytitle qstring myartist...
Python 序列化 反序列化自定義型別
內建json模組對於python內建型別序列化的描述 extensible json encoder for python data structures.supports the following objects and types by default python json dict obj...