1、json描述
JSON(JavaScript Object Notation, JS 对象标记) 是一种轻量级的数据交换格式。它基于 ECMAScript (w3c制定的js规范)的一个子集,采用完全独立于编程语言的文本格式来存储和表示数据。简洁和清晰的层次结构使得 JSON 成为理想的数据交换语言。 易于人阅读和编写,同时也易于机器解析和生成,并有效地提升网络传输效率。
2、json支持的数据格式
1)对象(字典),使用大括号
{}
2)数组(列表),使用中括号[]
3)整型、浮点型
4)字符串类型(字符串必须要用双引号,不能用单引号)
注:多个数据之间使用逗号分开,json本质上就是一个字符串。
3、字典和列表转json
import json
persons = [
{
'name': 'Kevin',
'age': 28,
'job': 'PM',
},
{
'name': 'Jose',
'age': 25,
'job': 'PM'
}
]
json_str = json.dumps(persons, ensure_ascii=False)
# 打印输出
print('json_str 的数据类型为 {}'.format(type(json_str)))
print('json_str = {}'.format(json_str))
运行结果:
json_str 的数据类型为 <class 'str'>
json_str = [{"name": "Kevin", "age": 28, "job": "PM"}, {"name": "Jose", "age": 25, "job": "PM"}]
json
在dumps
的时候,只能存放ascii
的字符,因此会将中文进行转义,这时候我们可以使用ensure_ascii=False
关闭这个特性。
在Python中,只有基本数据类型才能转换成JSON格式的字符串,也即:int、float、str、list、dict、tuple。
1)将json数据写入文件:
import json
persons = [
{
'name': 'Kevin',
'age': 28,
'job': 'PM',
},
{
'name': 'Jose',
'age': 25,
'job': 'PM'
}
]
json_str = json.dumps(persons, ensure_ascii=False)
# 使用write()方法将json内容写入文件‘persons.json’
with open('persons.json', 'w', encoding = 'utf-8') as fp:
fp.write(json_str)
2)将json数据直接dump到文件:
json模块中除了dumps函数,还有一个dump函数,这个函数可以传入一个文件指针,直接将字符串dump到文件中,示例代码如下:
import json
persons = [
{
'name': 'Kevin',
'age': 28,
'job': 'PM',
},
{
'name': 'Jose',
'age': 25,
'job': 'PM'
}
]
# 使用dump()方法将json内容写入文件‘persons.json’
with open('persons.json', 'w', encoding = 'utf-8') as fp:
json.dump(persons, fp, ensure_ascii = False)
3)将json数据loads成Python对象:
import json
json_str = '[{"name": "张三", "age": "18", "country": "中国"}, {"name": "李四", "age": "20", "country": "美国"}, {"name": "王麻子", "age": "25", "country": "英国"}]'
persons = json.loads(json_str)
print('persons 的数据类型为 {}'.format(type(persons)))
for person in persons:
print('person = {}'.format(person))
运行结果:
persons 的数据类型为 <class 'list'>
person = {'name': '张三', 'age': '18', 'country': '中国'}
person = {'name': '李四', 'age': '20', 'country': '美国'}
person = {'name': '王麻子', 'age': '25', 'country': '英国'}
3)使用load从文件读取json数据:
import json
with open('persons.json', 'r', encoding='utf-8') as fp:
persons = json.load(fp)
print('persons 的数据类型为 {}'.format(type(persons)))
for person in persons:
print('person = {}'.format(person))
运行结果:
persons 的数据类型为 <class 'list'>
person = {'name': '张三', 'age': '18', 'country': '中国'}
person = {'name': '李四', 'age': '20', 'country': '美国'}
person = {'name': '王麻子', 'age': '25', 'country': '英国'}