3、Python 处理 JSON 数据

前面一篇文章简单了解了下 JSON 基础,本篇文章学习下 Python 如何处理 JSON,然后介绍下自动化中如何使用 JSON 文件做配置文件。


Python 3.x 版本自带JSON 模块,不需要自己安装。



一、JSON 模块

- json: 用于字符串和python数据类型间进行转换 
- json模块提供了四个功能:dumps、dump、loads、load


dump 有卸下的意思,Python dump 卸下,编码成 JSON

load 有加载的意思,JSON load 加载,解码成 Python



1、dumps:将 字典转换为 符串

import json

dict1 = {"name":"storm","age": 30}
print(dict1)
print(type(dict1))

j1 = json.dumps(dict1)
print(j1)
print(type(j1))
运行结果

{'name': 'storm', 'age': 30}

{"name": "storm", "age": 30}



2、dump: 将字典 转换为 字符串, 并写入json文件中

import json

dict1 = {"name":"storm","age": 30}
print(dict1)
print(type(dict1))

with open("1.txt","w") as f:
    j1 = json.dump(dict1,f)
    print(j1)
    print(type(j1))
运行结果:

控制台输出如下:

{'name': 'storm', 'age': 30}

None

另外生成一个文件1.txt,存储的内容为:

{"name": "storm", "age": 30}

分析:dump 将转换直接存到了文件 1.txt 中,并没有存到变量 j1 中,所以 j1 打印是 None


3、loads: 将 字符串 转换为 字典

import json

str1 = '{"name":"storm","age": 30}'
print(str1)
print(type(str1))

dic = json.loads(str1)
print(dic)
print(type(dic))
运行结果:

{"name":"storm","age": 30}

{'name': 'storm', 'age': 30}


4、load:把文件打开,并把字符串变换为数据类型

我们读取一下前面保存的文件 1.txt

import json

with open("1.txt",'r') as f:
    print(type(f))
    dic = json.load(f)
    print(dic)
    print(type(dic))
运行结果


{'name': 'storm', 'age': 30}


二、应用

1、读取字典类型的数据文件

login.json文件内容如下:

{
"user1":{"name":"storm","password":"123456"},
"user2":{"name":"duzl","password":"123123"}
}

读取其中的内容

import json
file = "login.json"

with open(file,'r') as f:
    users = json.load(f)
    print(type(f))
    print(type(users))
    print(users)

for user in users:
    name = users[user]['name']
    password = users[user]['password']
    print(name,password)
运行结果



{'user1': {'name': 'storm', 'password': '123456'}, 'user2': {'name': 'duzl', 'password': '123123'}}
storm 123456
duzl 123123


2、读取列表类型的数据文件

arr.json 文件

[
  {
    "name":"storm",
    "age":30
  },
  {
    "name":"lina",
    "age":22
  }
]
Python文件

import json

file = "arr.json"

with open(file,'r') as f:
    ss = json.load(f)

for s in ss:
    print(s)
    print(s["name"])
    print(s["age"])
运行结果:

{'name': 'storm', 'age': 30}
storm
30
{'name': 'lina', 'age': 22}
lina
22

你可能感兴趣的:(Python)