做详情页到那个网站找模特素材,用h5开发的网站模板,wordpress单页营销主题,网站设计培训班前台目录 1.基本介绍
1.1相关知识
1.2解析 JSON 数据
1.3从文件解析JSON数据
1.4生成 JSON 数据
2.案例分析
2.1案例介绍 2.2原理分析
2.3代码展示 1.基本介绍
1.1相关知识
JSON库是 Python 内置的一个用于操作 JSON 数据的库#xff0c;提供了几个函数用于解析与生成提供了几个函数用于解析与生成或者说反序列化与序列化JSON 格式的数据。
1.2解析 JSON 数据
JSON库提供了一个函数loads用于从 Python 的字符串中解析 JSON 数据。使用它的方法很简单只需将含有 JSON 数据的字符串当做参数传递给它它的返回值就是由 Python 中的基础数据类型组成的对象。
import json
data {a:1,b:2,c:3,d:4,e:5};
text json.loads(data)
print(text) 得到的结果是{a: 1, b: 2, c: 3, d: 4, e: 5} JSON 的对象类型转换成了 Python 的dict类型。
JSON 各种数据类型在解析后对应的 Python 基础数据类型如下表
JSONPythonobject(对象)dictarray(数组)liststring(字符串)unicodenumber (int)int, longnumber (real)floattrueTruefalseFalsenullNoneJSON 数据类型转化成 Python 数据类型后就可以按照 Python 的方式来使用了
import json
data [1,2,3];
text json.loads(data)
text.append(4) #调用list的append函数
print(text) 得到的结果是[1, 2, 3, 4] 1.3从文件解析JSON数据
JSON 库的另一个函数 load 也是用于解析 JSON 数据的它与 loads 函数唯一不同的地方在于它是从文件中解析比如
import json
data open(test.txt,r,encoding utf-8)
text json.load(data) #将文件对象传递给load函数
print(text)
fp.close()
这样 test.txt 文件内的内容就会被当做 JSON 格式的数据来解析。 注意load 函数没有可选参数 encoding 只要文件对象使用了正确的字符编码打开文件load 函数就可以正确的解析数据。 1.4生成 JSON 数据
与解析的那两个函数相对应json 库也提供了两个函数dumps 和 dump 来将由 Python 基础数据类型组成的对象转化成 JSON 数据使用方法也类似
import jsondata [ { a : 1, b : 2, c : 3, d : 4, e : 5 } ]json json.dumps(data) #转化成JSON格式的字符串
print(json) 得到的结果是[{a: 1, b: 2, c: 3, d: 4, e: 5}] 注意这是一个字符串 dumps 没有可选参数 encoding 当要转化的对象含有中文等非 ASCII 字符时建议指定可选参数 ensure_ascii 为 False 。否则非 ASCII 的字符将会被显示成 \uXXXX 的形式。 2.案例分析
2.1案例介绍
有一个字符编码为 utf-8 的数据文件 step2/2017.txt
{count:3 ,
infos:
[
{name:赵昊 , age:15 ,height: 1.83, sex : 男性 },
{name:龙傲天 , age:16 ,height: 2.00, sex : 男性},
{name:玛丽苏 , age:15 ,height: 1.78, sex : 女性}
]
} 将其按 JSON 格式解析后将 infos 数组内的三个对象的年龄 age 增加一岁然后增加一条记录 名称叶良辰年龄17身高1.87男性同时将 count 的值从3改为4。 注意所有打开的文件请在打开文件的函数内及时关闭以免影响测试代码读取数据。 以 JSON 格式解析 step2/2018.txt 的内容并将其中的数据打印出来。 如果内容成功解析并且数据填写正确将会有如下结果输出 学生数4 名称赵昊年龄16身高:1.83男性 名称龙傲天年龄17身高:2.00男性 名称玛丽苏年龄16身高:1.78女性 名称叶良辰年龄17身高:1.87男性 2.2原理分析 该题首先让我们将JSON数据转化为Python数据进行操作利用load函数操作之后他会转换成一个大的字典(dict),字典名为obj,字典内还有一个键值对{“count”3}和一个名为infos的大的列表该列表内含有三个小字典修改键值对直接赋值即可修改列表内嵌套的字典直接用下表key即可增加列表元素用append函数记得增加字典。 2.3代码展示
import jsondef Func():data open(step2/2017.txt,r,encoding utf-8)obj json.load(data)data.close()#********** Begin *********#obj[count]4
#修改键值对把学生数从3改为4obj[infos][0][age]16obj[infos][1][age]17obj[infos][2][age]16obj[infos].append({name:叶良辰,age:17,height:1.87,sex:男性})#********** End **********#output open(step2/2018.txt,w,encoding utf-8)json.dump(obj,output) #输出到文件output.close()