JSON

python 解析json

字号+ 作者:H5之家 来源:H5之家 2015-11-14 11:12 我要评论( )

一、概念序列化(Serialization):将对象的状态信息转换为可以存储或可以通过网络传输的过程,传输的格式可以是JSON、XML等。反序列化就是从存储区域(JSON,XM

标签:

一、概念

序列化(Serialization):将对象的状态信息转换为可以存储或可以通过网络传输的过程,传输的格式可以是JSON、XML等。反序列化就是从存储区域(JSON,XML)读取反序列化对象的状态,重新创建该对象。

JSON(JavaScript Object Notation):一种轻量级数据交换格式,相对于XML而言更简单,也易于阅读和编写,机器也方便解析和生成,Json是JavaScript中的一个子集。

Python2.6开始加入了JSON模块,无需另外下载,Python的Json模块序列化与反序列化的过程分别是 encoding和 decoding

encoding:把一个Python对象编码转换成Json字符串
decoding:把Json格式字符串解码转换成Python对象
对于简单数据类型(string、unicode、int、float、list、tuple、dict),可以直接处理。

 

 

二、对简单数据类型的encoding 和 decoding

使用简单的json.dumps方法对简单数据类型进行编码,例如:

1 import json 2   ,{:(1,2,3),:(4,5,6)}] 4 encodedjson = json.dumps(obj) 5 print repr(obj) 6 print encodedjson

输出:

[[1, 2, 3], 123, 123.123, , {: (4, 5, 6), : (1, 2, 3)}] [[1, 2, 3], 123, 123.123, , {: [4, 5, 6], : [1, 2, 3]}]

通过输出的结果可以看出,简单类型通过encode之后跟其原始的repr()输出结果非常相似,但是有些数据类型进行了改变,例如上例中的元组则转换为了列表。在json的编码过程中,会存在从python原始类型向json类型的转化过程,具体的转化对照如下:

技术分享

 

json.dumps()方法返回了一个str对象encodedjson,我们接下来在对encodedjson进行decode,得到原始数据,需要使用的json.loads()函数:

1 decodejson = json.loads(encodedjson) 2 print type(decodejson) ] 4 print decodejson

输出:

<type > [1, 2, 3] [[1, 2, 3], 123, 123.123, u, {u: [4, 5, 6], u: [1, 2, 3]}]

 

loads方法返回了原始的对象,但是仍然发生了一些数据类型的转化。比如,上例中‘abc’转化为了unicode类型。从json到python的类型转化对照如下:

 

技术分享

json.dumps方法提供了很多好用的参数可供选择,比较常用的有sort_keys(对dict对象进行排序,我们知道默认dict是无序存放的),separators,indent等参数。

具体详见:

三、实例

 某个接口的返回值为json

{:0,:null,:[:,:,:,:,:175120,:,:}],:true}

我们想取某个数据,可以先loads解码转化为Python对象,然后进行操作

% start_json[][] 2 task_html = urllib2.urlopen(task_url) 3 task_json = json.loads(task_html.read()) start_json[] == 0: % task_json[][0][] 7 else: % task_json[][0][] 9 10 task_html.close()

 

 

 

 

 

 

 

 

python 解析json

标签:

 

1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,请转载时务必注明文章作者和来源,不尊重原创的行为我们将追究责任;3.作者投稿可能会经我们编辑修改或补充。

相关文章
  • Jsonp 关键字详解及json和jsonp的区别,ajax和jsonp的区别

    Jsonp 关键字详解及json和jsonp的区别,ajax和jsonp的区别

    2016-01-18 17:28

  • 正则表达式优化JSON字符串的技巧

    正则表达式优化JSON字符串的技巧

    2016-01-18 09:06

  • Linux学习笔记:MySQL字符集

    Linux学习笔记:MySQL字符集

    2016-01-17 18:24

  • PHP学习之字符串比较和查找

    PHP学习之字符串比较和查找

    2016-01-17 18:23

网友点评