python与json的转换

参考文章:

http://liuzhijun.iteye.com/blog/1859857

http://www.cnblogs.com/coser/archive/2011/12/14/2287739.html


序列化:将对象的状态信息转换为可以存储或者可以通过网络传输的过程,传输格式可以是json,xml等。

反序列化就是从存储区域(json,xml)读取反序列化对象的状态,重新创建该对象。


python的json模块序列化与反序列化的过程分别是encoding,decoding

encoding:把一个python对象编码转换成json字符串

decoding:把json格式字符串解码转换成python对象


json.dumps方法对简单数据类型encoding:

编码规则:


json.loads方法处理简单数据类型的decoding转换:

解码规则:

从上面两个图可以看出python转换成json的时候,list、tuple都会转成array,而json转成python的时候,array就只转成list了。


其他用法:

1.json.dumps(data, sort_keys=True)可以对key排序
eg:
data = [ { 'a':'A', 'b':(2, 4), 'c':3.0 } ]
json.dumps(data, sort_keys=True)
SORT: [{"a": "A", "b": [2, 4], "c": 3.0}
2.json.dumps(data, sort_keys=True, indent=2)indent参数根据数据格式缩进显示,读起来更加清晰

3.separators参数的作用是去掉,,:后面的空格,从上面的输出结果都能看到", :"后面都有个空格,这都是为了美化输出结果的作用,但是在我们传输数据的过程中,越精简越好,冗余的东西全部去掉,因此就可以加上separators参数

4.skipkeys参数,在encoding过程中,dict对象的key只可以是string对象,如果是其他类型,那么在编码过程中就会抛出ValueError的异常。skipkeys可以跳过那些非string对象当作key的处理.
eg:
import json

data= [ { 'a':'A', 'b':(2, 4), 'c':3.0, ('d',):'D tuple' } ]

try:
    print json.dumps(data)
except (TypeError, ValueError) as err:
    print 'ERROR:', err
print 
print json.dumps(data, skipkeys=True)
输出:
ERROR: keys must be a string

[{"a": "A", "c": 3.0, "b": [2, 4]}]


json.load(),dump()

json格式字符串写入到文件流中

如果对于大数据,把他编码到一个类文件(file-like)中更合适,load()dump()方法就可以实现这样的功能。

 json 主要包含四个方法:

dump和dumps(从python生成json),load和loads(解析json成python的数据类型)dump和dumps的唯一区别是 dump会生成一个类文件对象,dumps会生成字符串,同理load和loads分别解析类文件对象和字符串格式的json。






  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值