1、json简介:
定义:JSON(JavaScript Object Notation, JS 对象简谱) 是一种轻量级的数据交换格式。特点:简洁和清晰的层次结构使得 JSON 成为理想的数据交换语言。
易于人阅读和编写,同时也易于机器解析和生成,并有效地提升网络传输效率。
2、json数据格式:
在 JS 语言中,一切都是对象。任何支持的类型都可以通过 JSON 来表示,例如字符串、数字、对象、数组等。但是对象和数组是比较特殊且常用的两种类型: 对象表示为键值对{"name":"king","age":18} 数据由逗号分隔{"name":"king","age":18} 花括号保存对象{"name":"king","age":18} 方括号保存数组[{"name":"king","age":18},{"name":"king","age":18}]
3、json序列化数据的注意事项:
A、两种语言之间数据类型的差异,用json交换。
B、外层必须是字典或列表这两个容器类数据类型。
C、必须是双引号(因为java等其它语言有使用双引号表示字符串,单引号不表示字符串)。
D、数据类型序列化说明:json是字符串形式,json中不存在元组, tuple元祖序列化之后变列表;set集合不能用来序列化,序列化集合报错,所以通常序列化针对字典或列表。
4、序列化与反序列化:1)、序列化简单定义:数据对象变成json格式。
语法:
importjson
dumps()
描述:将Python中的数据序列化,变成json字符串。
语法:strjson.dumps(Objectobj)
举例:
importjson
list1=[100,200,"king"]
str1=json.dumps(list1)#序列化
print(type(str1),str1)# [100, 200, "king"]
序列化集合报错
importjson
mset={1,2,3}#不能是集合,序列化集合报错。
print(json.dumps(mset))#TypeError: Object of type 'set' is not JSON serializable
2)、反序列化简单定义:json格式变其它
语法:
loads()
描述:将json字符串格式还原为python数据类型格式。
语法:Objectjson.loads(strjson)
举例:
importjson
str1='{"name":"king","age":18}';#json必须为双引号
data=json.loads(str1)#反序列化
print(type(data),data)# {'name': 'king'}
3)、序列化列表、元组、字典举例
importjson
#1、序列化列表
list1=[100,200,"king"]
str1=json.dumps(list1)#序列化
print(type(str1),str1)# [100, 200, "king"]
data=json.loads(str1)#反序列化
print(type(data),data)# {'name': 'king', 'age': 18}
#2、序列化字典
dict1= {"name":"king","age":18}
str2=json.dumps(dict1)#序列化
print(type(str2),str2)# {"name": "king", "age": 18}
data=json.loads(str2)#反序列化
print(type(data),data)# {'name': 'king', 'age': 18}
#3、序列化元祖
tup=(1,2,3)
str3=json.dumps(tup)#json中不存在元组。序列化元组之后元组变列表
print(type(str3),str3)# [1, 2, 3]
data=json.loads(str3)# 反序列化元组
print(type(data),data)# [1, 2, 3]
# 4、序列化集合
# import json
# mset= #不能是集合,序列化集合报错。
# print(json.dumps(mset)) #TypeError: Object of type 'set' is not JSON serializable
4)、序列化中文显示
import
v= {'k1':'alex','k2':'魔降风云变'}
str5=json.dumps(v)
print(type(str5),str5)# {"k1": "alex", "k2": "\u9b54\u964d\u98ce\u4e91\u53d8"}
val=json.dumps(v,ensure_ascii=False)
print(val)
5、基本类型的序列化与反序列化
importjson
# 1、字符串序列化与反序列化:
somestr="xiaoma"
str=json.dumps(somestr)#序列化
print(type(str),str)# "xiaoma"
object=json.loads(str)#反序列化
print(type(object),object)# xiaoma
# 2、整型序列化与反序列化
someint=2
str=json.dumps(someint)#序列化
print(type(str),str)# 2
object=json.loads(str)#反序列化
print(type(object),object)# 2
# 3、浮点型序列化与反序列化
somefloat=2.03
str=json.dumps(somefloat)#序列化
print(type(str),str)# 2.03
object=json.loads(str)#反序列化
print(type(object),object)# 2.03
# 4、布尔型序列化与反序列化:
somebool=True
str=json.dumps(somebool)#序列化
print(type(str),str)# true
object=json.loads(str)#反序列化
print(type(object),object)# True
# 5、None序列化与反序列化
importjson
someNone=None
str=json.dumps(someNone)#序列化
print(type(str),str)# null
object=json.loads(str)#反序列化
print(type(object),object)# None
注意:
python的None在json中为null
python的True在json中true
5、json.dump和json.load
语法:
A、序列化并写入文件:
语法:
dump()
描述:将python数据类型序列化为json字符形式并写入文件。
语法:Nonejson.dump(Object,file)
B、从文件读取并反序列化:
load()
描述:从文件中读取json字符串转为python数据类型。
语法:Objectjson.load(file)
举例:
A、序列化并写入文件:
importjson
v= {'k1':'yh','k2':'小马过河'}
f=open('xiaoma.txt',mode='w',encoding='utf-8')#文件不存在就会生成
val=json.dump(v,f)
print(val)#None
f.close()
B、从文件读取并反序列化:
importjson
f=open('xiaoma.txt',mode='r',encoding='utf-8')
data=json.load(f)
f.close()
print(type(data),data)# {'k1': 'yh', 'k2': '小马过河'}
关注最编程,懂编程,更懂世界!
领取专属 10元无门槛券
私享最新 技术干货