Python处理json格式数据

(一)JSON 数据格式

1.JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式。JSON采用完全独立于语言的文本格式,这些特性使JSON成为理想的数据交换语言。易于人阅读和编写,同时也易于机器解析和生成。 
2.JSON数据格式是数据传输中最常见的格式之一,人们喜欢使用这种格式,是因为它结构清晰,易于阅读且方便解析。网址在向页面JavaScript传输数据时,JSON是最常用的数据格式之一。

(二)JSON数据结构

  1. “名称/值”对的集合(A collection of name/value pairs)。不同的语言中,它被理解为对象(object),记录(record),结构(struct),字典(dictionary),哈希表(hash table),有键列表(keyed list),或者关联数组 (associative array)。
  2. 值的有序列表(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))
  • 1
  • 2
  • 3
  • 4
结果演示:
<class 'list'>
<class 'str'>
  • 1
  • 2
  • 3

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

import json
# with open("aim.json","a",encoding='utf-8') as f:
#    a = [{'姓名': 'Kaina', '年龄': 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('数据写入完毕!')
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19

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

(四)实例演示

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

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

   {
    "姓名": "李四",
    "年龄": 26,
    "职业": "主管",
    "工资": 8000
  }
  ,
   {
    "姓名": "王五",
    "年龄": 27,
    "职业": "程序员",
    "工资": 9000
  }
  ]
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22

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)
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
结果演示:
{'姓名': '张三', '年龄': 29, '职业': '讲师', '工资': 10000}
{'姓名': '李四', '年龄': 26, '职业': '主管', '工资': 8000}
{'姓名': '王五', '年龄': 27, '职业': '程序员', '工资': 9000}
  • 1
  • 2
  • 3
  • 4
  • 5

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['工资']))
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
结果演示:
张三 工资=10000
李四 工资=8000
王五 工资=9000
  • 1
  • 2
  • 3
  • 4

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)
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

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)))
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
结果演示:
{'姓名': '张三', '年龄': 29, '职业': '讲师', '工资': 10000}
{'姓名': '李四', '年龄': 26, '职业': '主管', '工资': 8000}
{'姓名': '王五', '年龄': 27, '职业': '程序员', '工资': 9000}
张三工资最高:10000

猜你喜欢

转载自blog.csdn.net/qq_24373725/article/details/80692991
今日推荐