1. JSON 概述
JSON(JavaScript Object Notation, JS 对象标记)是一种轻量级的数据交换格式,简洁和清晰的层次结构使得JSON成为理想的数据交换语言。
JSON 支持的数据格式:
- 对象(字典):花括号
- 数组(列表):方括号
- 字符串类型:必须使用双引号,不能使用的单引号
- 整形、浮点型、布尔型、null等
- 多个数据之间用逗号隔开
- json 本质上是一个字符串
在线json 解析器:http://json.cn/
{"Person": [{"username": "张三", "age":18}]}
json :
{
"Person":[
{
"username":"张三",
"age":18
}
]
}
2. json 常用函数
2.1 python对象转换成json字符串
- dumps :把python对象转换成json 格式字符串;
- dump:把python对象转换成json格式字符串,同时还可以接收一个文件指针fp参数,可以写入到文件中
这两种方法都有一个参数,ensure_ascii 默认情况下时True,即默认只能存储支持ASCII的字符;如果要存储中文,将ensure_ascii 参数设为False。
在写python对象时不需要格外注意遵循json格式要求,只需正确书写python即可,因为dumps/dump函数会自动将python转换成json格式。
import json
books = [
{
"name": "三国演义",
"price": 18.8
},
{
"name": "水浒传",
"price": 19.9
}
]
# dumps
result = json.dumps(books, ensure_ascii=False)
print(result, type(result))
#dump
fp = open('books.json', 'w', encoding='utf-8')
json.dump(books, fp, ensure_ascii=False)
fp.close()
#open 之后需要手动close文件
2.2 json 字符串转换成python对象
- loads:将json 字符串转换成python对象
- load:json 字符串转换成python对象,并且可以直接从文件中获取json字符串
import json
json_str = '[{"name": "三国演义", "price": 18.8}, {"name": "水浒传", "price": 19.9}]'
print(type(json_str))
result = json.loads(json_str)
print(result)
print(type(result))
print('*'*20)
# load
with open('books.json', 'r', encoding='utf-8') as fp:
result = json.load(fp)
print(result)
print(type(result))
使用with open 打开文件不需要手动关闭文件
并且在获取文件内容时,最好指定好解析的编码,否则会容易报错