json
json简介
全称JavaScript Object Notation(Jave Script对象表示法),它是一种基于文本,独立于语言的轻量级数据交换格式
。以易于让人阅读的文字为基础,用来传输由属性值或者序列值的数据对象。
特点:
轻量级的文本数据交换格式
易于阅读和编写
Web世界中最理想的数据交换格式
json语法规则:
1、数据由键值对组成
2、键值对由逗号分割
3、大括号中保存对象
4、中括号中保存数组
注意事项:
1、字符串必须用双引号“”来包括
2、值可以是字符串、数字、true、false、null、列表、字典。
json与python的一些比较:
目前前后端数据交互使用基本都是json
后端python与json的互转:json模块提供了API接口
json.dumps(obj) #将python数据格式转换为json
json.loads(s) #将json数据格式转换为python数据格式
json.dump(obj,fp) #将python数据格式转换为json并保存到文件中
json.load(fp) #从文件中读取json,并转换为python数据
#将python数据转换为json数据例子1 import json my_dict = { 'name':'lusi', 'age':18, 'a':True } result = json.dumps(my_dict) #一般在括号中还可以写indent=数字,控制输出缩进。 print(result) #输出结果为:{"name": "lusi", "age": 18, "a": true}单引号全部转为双引号 print(type(result)) #输出结果为:字符串类型<class 'str'>
#将python数据转换为json例子2 import json my_dict = { 'name':'lusi', 'age':18, 'talent':'你好帅' } result = json.dumps(my_dict,indent=4) print(result) #输出结果为: { "name": "\u58a8\u67d3", "age": 18, "talent": "\u4f60\u597d\u5e05" } #可以看到中文无法直接转换出来,使用ensure ascii确认是否使用ascii解析 result1 = json.dumps(my_dict,indent=4,ensure_ascii=False) print(result1) #最终可以正确显示
#将json转换为python数据 aa = json.loads(result1) print(aa) #输出结果:{'name': 'lusi', 'age': 18, 'talent': '你好帅'} print(type(aa))#<class 'dict'>
#json.dump(obj,fp) #将python数据格式转换为json并保存到文件中 import json my_dict = { 'name':'lusi', 'age':18, 'talent':'你好帅' } with open('aaa.txt','w+') as f: result = json.dump(my_dict,indent=4,ensure_ascii=False,fp=f) f.seek(0) print(f.read()) #输出结果为: # { # "name": "lusi", # "age": 18, # "talent": "你好帅" # }
#json.load(fp) #从文件中读取json,并转换为python数据
import json with open('aaa.txt','r+') as file: #(file.read()) result2 = json.load(fp=file) print(type(result2)) print(result2)
#简单练习 在程序中将字典转化为json并存入文件,然后再从该文件中读取"帅",将这个字符打印出来。 ''' import json data = { 'name':'nanbei', 'age':18, 'feature':['高','富','帅'] } with open('bbb.txt','w+') as f: result = json.dump(data,ensure_ascii=False,fp=f) f.seek(0) print(f.read()) with open('bbb.txt','r+') as file: res = json.load(fp=file) print(type(res)) print(res["feature"][-1])