Python处理JSON(可编辑修改word版)

相关主题
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

概念

序列化(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),可以直接处理。json.dumps 方法对简单数据类型encoding:

import json

data = [{'a':"A",'b':(2,4),'c':3.0}] #list 对象

print "DATA:",repr(data)

data_string = json.dumps(data)

print "JSON:",data_string

输出:

DATA: [{'a':'A','c':3.0,'b':(2,4)}] #python 的dict 类型的数据是没有顺序存储的

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

JSON 的输出结果与DATA 很相似,除了一些微妙的变化,如python 的元组类型变成了Json 的数组,Python 到Json 的编码转换规则是:

json.loads 方法处理简单数据类型的decoding(解码)转换

import json

data = [{'a':"A",'b':(2,4),'c':3.0}] #list 对象

data_string = json.dumps(data)

print "ENCODED:",data_string

decoded = json.loads(data_string)

print "DECODED:",decoded

print "ORIGINAL:",type(data[0]['b'])

print "DECODED:",type(decoded[0]['b'])

输出:

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

DECODED: [{u'a': u'A', u'c': 3.0, u'b': [2, 4]}]

ORIGINAL:

DECODED:

解码过程中,json 的数组最终转换成了 python 的 list ,而不是最初的 tuple 类型,Json 到 Python 的解码规则是:

json 的人文关怀

编码后的 json

格式字符串紧凑的输出,而且也没有顺序,因此 dumps 方法提供了一些可选 的参数,让输出的格式提高可读性,如 是告诉编码器按照字典排序(a 到 z)输出。

import json

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

print 'DATA:', repr(data)

unsorted = json.dumps(data)

print 'JSON:', json.dumps(data)

print 'SORT:', json.dumps(data, sort_keys=True)

sort_keys

输出:

DATA: [{'a': 'A', 'c': 3.0, 'b': (2, 4)}]

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

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

:

import json

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

print 'DATA:', repr(data)

print 'NORMAL:', json.dumps(data, sort_keys=True)

print 'INDENT:', json.dumps(data, sort_keys=True, indent=2)

输出:

DATA: [{'a': 'A', 'c': 3.0, 'b': (2, 4)}]

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

INDENT: [

{

"a": "A",

"b": [

2,

4

],

"c": 3.0

}

]

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

import json

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

print 'DATA:', repr(data)

print 'repr(data)

:', len(repr(data))

print 'dumps(data)

:', len(json.dumps(data))

print 'dumps(data, indent=2) :', len(json.dumps(data, indent=2))

相关文档
最新文档