众所周知,json 对象无疑是后端编程、前端数据渲染最常用的一种轻量级的数据交换格式,它更是一种独立于编程语言的文本格式。总体上来说,在 python 编程中对于 json 对象的操作主要有两种,一种是将 python 对象转换成 json 的数据格式、另一种则是将 json 对象转换成 python 对象的格式。

在 python 的内置库中默认提供了叫 json 的库用来操作 json 数据格式,还有另外一种形式通过第三方提供的 json 相关的库来操作数据对象。

1、使用内置的 json 库完成对数据格式的转换

json.dumps() 函数,将 python 数据对象转换成 json 格式数据,通常也可以看作是对 json 数据进行编码。

1# 导入 json 内置库
 2import json
 3
 4if __name__ == '__main__':
 5    # 定义 python 原始数组
 6    data = [{'name':u'Python 集中营','type':u'Sir.老王'},{'name':u'Python 学习社区','type':u'Sir.老王'}]
 7    # dumps() 函数将 python 数组转换成 json 数据格式
 8    # 注意:ensure_ascii 参数设置为 False 否则会以 ascii 编码的格式输出
 9    data_json = json.dumps(data,ensure_ascii=False)
10    # 打印 json 格式的数据
11    print data_json
12    '''
13    为了使打印的数据结构更加美观,还可以再加上特殊的参数值来调整
14    sort_keys=True 开启属性排序
15    indent=4 内部元素缩进4个
16    separators=(',', ': ') 分隔符设置
17    '''
18    data_json = json.dumps(data, ensure_ascii=False, sort_keys=True, indent=4, separators=(',', ': '))
19    print data_json

json.loads() 函数,将 json 格式数据转换成 python 数据对象,通常也称之为对 json 数据进行解码。

1 print json.loads(data_json)
2、使用 demjson 第三方库完成对数据格式的转换

demjson 库之所以被经常使用,主要是因为它可以方便的解析不规则的又类似于 json 格式的数据,demjson 对象主要有两个函数,一个是 encode() 函数进行 json 格式编码、也就是将 python 对象转换成 json 格式,另一个就是 decode() 函数将 json 格式转换成 python的数据对象。

demjson.decode() 函数

1import demjson
 2'''
 3定义一个不规则的 json 格式数据,
 4类似于 javascript 中的 json 数据格式
 5'''
 6data_json = "{a:1, b:2, c:3}"
 7# json 格式解码
 8data = demjson.decode(data_json)
 9# 打印结果
10print data
11# 结果
12{'a':1, 'b':2, 'c':3}

demjson.encode() 函数

1import demjson
 2# 定义 python 数组对象
 3data = [ { 'a' : 1, 'b' : 2, 'c' : 3 } ]
 4# 将其编码成 json 格式数据
 5data_json = demjson.encode(data)
 6# 在进行编码时可以指定编码格式
 7data_json = demjson.encode(data,encoding=‘utf-8’)
 8# 打印结果
 9print data_json
10# 结果
11[{"a":1,"b":2,"c":3}]