python中关于序列化问题

来源:互联网 发布:淘宝有退款率吗 编辑:程序博客网 时间:2024/04/29 06:29

序列化:我们把变量从内存中变成可存储或传输的过程称之为序列化,在Python中叫pickling,在其他语言中也被称之为serialization,marshalling,flattening等等,都是一个意思

序列化例子:

import  json  import cPickle  __author__ = 'bintian.xbt'  d = dict(name='xbt',age=20,score=99)  son = json.dumps(d)  print son  class student(object):      def __init__(self,name,age,score):          self.name = name          self.age  = age          self.score= score  def student2dict(std):      return {          'n':std.name,          'a':std.age,          's':std.score      }  def dic2student(d):      return student(d['n'],d['a'],d['s'])  s = student('xbt',30,100)  json_s = json.dumps(s,default=student2dict)  print json_s  std = json.loads(json_s,object_hook=dic2student)  print std  print std.age,std.name,std.score  s = student('xbt',30,100)  pickle_s = cPickle.dumps(s)  print pickle_s

输出:

D:\Python27\python.exe D:/py/webstats/webstats/test_json_pickle.py

{"age": 20, "score": 99, "name": "xbt"}

{"a": 30, "s": 100, "n": "xbt"}

<main.student object at 0x0274ABD0>

30 xbt 100

ccopyreg reconstructor p1 (cmain student p2 c__builtin object p3 NtRp4 (dp5 S'age' p6 I30 sS'score' p7 I100 sS'name' p8 S'xbt' p9 sb.

Process finished with exit code 0


0 0
原创粉丝点击