序列化与JSON
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了序列化与JSON相关的知识,希望对你有一定的参考价值。
参考技术A 在php应用中,序列化和反序列化一般用做缓存,比如session缓存,cookie等。序列化和反序列化在PHP中用得不算多,在Java语言中用得比较多。其实你有没有发现,这种把一个对象或者数组的变量转化成字符串的方式,json也可以做到。
使用json来实现对象和字符串之间的转换,在PHP中显得更加直观和轻便。而且经过测试,使用json_encode()比serialize()方法更加快速,大概快2~3倍。
在我看来,序列化和反序列化是一种传输抽象数据的思想。通过定义序列化和反序列化的规则,我们可以实现将PHP中的对象序列化成字节流,然后传输给别的语言或者系统使用,这在远程调用里面非常的方便。
之json与pickle数据序列化
1.终于学到json了,简直是万分期待
2.json序列化:json.dumps()
json反序列化:json.loads()
json对字典、列表、字符串起作用,可以在不同语言间进行交互。
pickle只支持python语言,Java只认识json,一般是dump一次,对应的load一次
3.(1)使用json将字典的一个内容存入文本中,
import json info= ‘name‘:‘alex‘, ‘age‘:22 f=open("test.text","w") print(json.dumps(info)) f.write(json.dumps(info)) f.close()
运行后,字典中的内容已经写入到test.text文本中,这时如果要读取改文本中的内容,就要用到反序列化:
import json f=open("test.text","r") data=json.loads(f.read()) print(data[‘age‘])
这时读取到的age为22
(2)如果在字典中有函数的内存地址,这时就要用到pickle,其他与json一样
import pickle def sayhi(name): print("hello",name) info= ‘name‘:‘alex‘, ‘age‘:22, ‘func‘:sayhi f=open("test.text","wb") print(pickle.dumps(info)) f.write(pickle.dumps(info)) f.close()
反序列为:
import pickle def sayhi(name): print("hello", name) print("hello2",name) f=open("test.text","rb") data=pickle.loads(f.read()) print(data[‘func‘]("wu"))
(3)而在pickle的序列中,f.write(pickle.dumps(info))与pickle.dump(info,f)是一样的,那么也可以写成如下形式
import pickle def sayhi(name): print("hello",name) info= ‘name‘:‘alex‘, ‘age‘:22, ‘func‘:sayhi f=open("test.text","wb") pickle.dump(info,f) #与f.write(pickle.dumps(info))一样 f.close()
同理反序列化也一样,
import pickle def sayhi(name): print("hello", name) print("hello2",name) f=open("test.text","rb") data=pickle.load(f) #data=pickle.loads(f.read()) print(data[‘func‘]("wu"))
好的,完毕
以上是关于序列化与JSON的主要内容,如果未能解决你的问题,请参考以下文章