您的位置:首页 > 编程语言 > Python开发

Python处理JSON格式的文件(十三)

2018-01-23 16:15 369 查看
(一)JSON 数据格式

1.JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式。JSON采用完全独立于语言的文本格式,这些特性使JSON成为理想的数据交换语言。易于人阅读和编写,同时也易于机器解析和生成。

2.JSON数据格式是数据传输中最常见的格式之一,人们喜欢使用这种格式,是因为它结构清晰,易于阅读且方便解析。网址在向页面JavaScript传输数据时,JSON是最常用的数据格式之一。

(二)JSON数据结构

“名称/值”对的集合(A collection of name/value pairs)。不同的语言中,它被理解为对象(object),记录(record),结构(struct),字典(dictionary),哈希表(hash table),有键列表(keyed list),或者关联数组 (associative array)。

值的有序列表(An ordered list of values)。在大部分语言中,它被理解为数组(array)。

(三)JSON知识

反序列化:是指将字符串转换成Python中的数据类型,目的是操作数据。

序列号:是指将Python中的数据类型转换成字符串,目的是将数据写入文本。

Json模块提供了四个功能:dumps()、dump()、loads()、load()。

1.dumps()方法把数据类型转换成字符串 。

2.dump()方法把数据类型转换成字符串并存储在文件中

3.loads()方法把字符串转换成数据类型

4. load()方法把文件打开从字符串转换成数据类型

1.dumps()方法把数据类型转换成字符串 。

a = [{'姓名': 'Kaina', '年龄': 22, '职业': '销售员', '工资': 5000}]
print(type(a))
b=json.dumps(a)
print(type(b))


结果演示:
<class 'list'>
<class 'str'>


2.dump()方法把数据类型转换成字符串并存储在文件中

import json
# with open("aim.json","a",encoding='utf-8') as f:
#    a = [{'姓名': 'Kaina',
4000
'年龄': 22, '职业': '销售员', '工资': 5000}]
#    print(a,type(a))
#    #1.将列表类型数据转换成字符串类型
#    s=json.dumps(a,ensure_ascii=False)
#    print(s,type(s))
#    f.write(s)
#    print('写入完毕!')
with open("aim.json","a",encoding='utf-8') as f:
a = [{'姓名': 'Kaina', '年龄': 22, '职业': '销售员', '工资': 5000}]
print(type(a))
'''
1.消除乱码ensure_ascii=False
2.把数据类型转换成字符串并存储在文件中
'''
b=json.dump(a,f,ensure_ascii=False)
print('数据写入完毕!')


3.loads()方法把字符串转换成数据类型

(四)实例演示

1.test.json文本内容如下:

[
{
"姓名": "张三",
"年龄": 29,
"职业": "讲师",
"工资": 10000
},

{
"姓名": "李四",
"年龄": 26,
"职业": "主管",
"工资": 8000
}
,
{
"姓名": "王五",
"年龄": 27,
"职业": "程序员",
"工资": 9000
}
]


2.把test.json中的数据导入程序中

方法一
import json
#1.从josn文件中读取数据,并保存在josn_data变量中
json_data=open('test.json',encoding='utf-8').read()
print(type(json_data))
#2.json调用loads()方法将字符串数据转换成列表
data=json.loads(json_data)
print(type(data))
print(data)
for item in data:
print(item)

----------
方法二
import json
f=open('test.json',encoding='utf-8')
#1.将数据导入程序
data=json.load(f)
#2.遍历data,打印列表中的每一个字典
for dict_data in data:
print(dict_data)


结果演示:
{'姓名': '张三', '年龄': 29, '职业': '讲师', '工资': 10000}
{'姓名': '李四', '年龄': 26, '职业': '主管', '工资': 8000}
{'姓名': '王五', '年龄': 27, '职业': '程序员', '工资': 9000}


3.获取字典某一键对应的值

import json
f=open('test.json',encoding='utf-8')
#1.将数据导入程序
data=json.load(f)
#2.遍历data,打印列表中的每一个字典
for dict_data in data:
print(dict_data['姓名'],'工资='+str(dict_data['工资']))


结果演示:
张三 工资=10000
李四 工资=8000
王五 工资=9000


4.将一个JSON文件中的内容写到另一个JSON文件中(复制)

import json
#1.从josn文件中读取数据,并保存在josn_data变量中
json_data=open('test.json',encoding='utf-8').read()
aim_f = open('aim.json', 'w', encoding='utf-8')
#2.把test.json文件中的数据Copy到aim.json中
#3.目标文件对象调用write()方法把字符串写入
aim_f.write(json_data)


5.获取字典的最大值

import json
f=open('test.json',encoding='utf-8')
#1.将数据导入程序
data=json.load(f)
names=[]
salary=[]
#根据索引从列表中找到工资最高人的姓名
index=0
#2.遍历data,打印列表中的每一个字典
for dict_data in data:
names.append(dict_data['姓名'])
salary.append(dict_data['工资'])
for i ,value in enumerate(salary):
if value==10000:
index=i
print(names[index]+'工资最高:'+str(max(salary)))


结果演示:
{'姓名': '张三', '年龄': 29, '职业': '讲师', '工资': 10000}
{'姓名': '李四', '年龄': 26, '职业': '主管', '工资': 8000}
{'姓名': '王五', '年龄': 27, '职业': '程序员', '工资': 9000}张三工资最高:10000
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: