我心中的王者:Python-第24章 JSON资料
JSON是一种数据格式,由美国程序设计师Douglas Crockford创建的,JSON全名是JavaScript Object Notation,由JSON英文全文字义我们可以推敲JSON的缘由,最初是为JavaScript开发的。这种数据格式由于简单好用被大量应用在Web开发与大数据数据库(NoSQL),现在已成为一种著名数据格式,Python与许多程序语言同时采用与支持。也由此在使用Python设计程序时,可以将数据以JSON格式存储,与其他程序语言的设计师分享。
Python程序设计时需使用import json导入json模块。
24-1 认识json数据格式
json的数据格式有2种,分别是:
对象(object):一般用大括号{ }表示。
数组(array):一般用中括号[ ]表示。
24-1-1 对象(object)
在json中对象就是用“键-值(key:value)”方式配对存储,对象内容用左大括号“{”开始,右大括号“}”结束,键(key)和值(value)用“:”区隔,每一组键:值间以逗号“,”隔开,以下是取材自json.org的官方图说明。

在json格式中键(key)是一个字符串(string)。值可以是数值(number)、字符串(string)、布尔值(bool)、数组(array)或是null值。
例如:下列是对象的实例。
{"Name":"Hung","Age":25}
使用json时需留意,键(key)必须是文字,例如下列是错误的实例。
{"Name":"Hung", 25:"Key"}
在json格式中字符串需用双引号,同时在json文件内不可以有批注。
24-1-2 数组(array)
数组基本上是一系列的值(value)所组成,用左中括号“[”开始,右中括号“]”结束。各值之间用逗号“,”隔开,以下是取材自json.org的官方图说明。

数组的值可以是数值(number)、字符串(string)、布尔值(bool)、数组(array)或是null值。

24-1-3 json数据存在方式
前两节所述是json的数据格式定义,但是在Python中它存在方式是字符串(string)。
‘json数据' # 可参考程序实例ch24_1.py的第3个输出
使用json模块执行将Python数据转成json字符串类型数据或json文件使用不同方法,下面24-2和24-3节将分别说明。
24-2 将Python应用在json字符串形式数据
本节主要说明json数据以字符串形式存在时的应用。
24-2-1 使用dumps( )将Python数据转成json格式
在json模块内有dumps( ),可以将Python数据转成json字符串格式,下列是转化对照表。

程序实例ch24_1.py:将Python的列表与元组数据转成json的数组数据的实例。
# ch24_1.py
import json
listNumbers = [5, 10, 20, 1] # 列表数据
tupleNumbers = (1, 5, 10, 9) # 元组资料
jsonData1 = json.dumps(listNumbers) # 将列表数据转成json数据
jsonData2 = json.dumps(tupleNumbers) # 将列表数据转成json数据
print("列表转换成json的数组", jsonData1)
print("元组转换成json的数组", jsonData2)
print("json数组在Python的数据类型 ", type(jsonData1))
执行结果
列表转换成json的数组 [5, 10, 20, 1]
元组转换成json的数组 [1, 5, 10, 9]
json数组在Python的数据类型 <class 'str'>
特别留意,上述笔者在第10行打印最终json在Python的数据类型,结果是以字符串方式存在。若以jsonData1为例,从上述执行结果我们可以了解,在Python内它的数据如下:
‘[5, 10, 20, 1]'
程序实例ch24_2.py:将Python由字典元素所组成的列表转成json数组,转换后原先字典元素变为json的对象。
# ch24_2.py
import json
listObj = [{
'Name':'Peter', 'Age':25, 'Gender':'M'}] # 列表数据元素是字典
jsonData = json.dumps(listObj) # 将列表数据转成json数据
print("列表转换成json的数组", jsonData)
print("json数组在Python的数据类型 ", type(jsonData))
执行结果
列表转换成json的数组 [{
"Name"

最低0.47元/天 解锁文章
339

被折叠的 条评论
为什么被折叠?



