json模块的定义
Json**是一种轻量级的数据交换格式**。Json源自JavaScript语言,易于人类的阅读和编写,同时也易于机器解析和生成,是目前应用最广泛的数据交换格式。
#{}是一个对象 []数组
{
"大数据1班":[{"张三":15,"李四":18,"赵六":20}],
"大数据2班":[{"张三":15,"李四":18,"赵六":20}],
"大数据3班":[{"张三":15,"李四":18,"赵六":20}],
"大数据4班":[{"张三":15,"李四":18,"赵六":20}],
"大数据5班":[{"张三":15,"李四":18,"赵六":20}],
"大数据6班":[{"张三":15,"李四":18,"赵六":20}],
"大数据7班":[{"张三":15,"李四":18,"赵六":20}],
"大数据8班":[{"张三":15,"李四":18,"赵六":20}],
"大数据9班":[{"张三":15,"李四":18,"赵六":20}],
"大数据10班":[{"张三":15,"李四":18,"赵六":20}],
}
Python内置类型转换json类型对招表
Python JSON dict object list,tuple array str string int,float,Enums number True true False false None null
json类型转换Python类型对照表
JSON Python object dict array list string str number (int) int number (real) float true True false False null None
常用方法
方法 功能 json.dump(obj,fp) 将python数据类型转换并保存到json格式的文件内 json.dumps(obj) 将python数据类型转换为json格式的字符串 json.load(fp) 从json格式的文件中读取数据并转换为python的类型 json.loads(s) 将json格式的字符串转换为python的类型
dumps()与loads()
参数:
"""
json.dumps(obj, skipkeys=False, ensure_ascii=True, check_circular=True, allow_nan=True, cls=None, indent=None, separators=None, encoding="utf-8", default=None, sort_keys=False, **kw)
sort_keys =True:是告诉编码器按照字典排序(a到z)输出。如果是字典类型的python对象,就把关键字按照字典排序。
indent:参数根据数据格式缩进显示,读起来更加清晰。一般写2和4
separators:是分隔符的意思,参数意思分别为不同dict项之间的分隔符和dict项内key和value之间的分隔符,
skipkeys:默认值是False,如果dict的keys内的数据不是python的基本类型(str,unicode,int,long,float,bool,None),设置为False时,就会报TypeError的错误。此时设置成True,则会跳过这类key
ensure_ascii=True:默认输出ASCLL码,如果把这个该成False,就可以输出中文。check_circular:如果check_circular为false,则跳过对容器类型的循环引用检查,循环引用将导致溢出错误(或更糟的情况)。
allow_nan:如果allow_nan为假,则ValueError将序列化超出范围的浮点值(nan、inf、-inf),严格遵守JSON规范,而不是使用JavaScript等价值(nan、Infinity、-Infinity)。
default:default(obj)是一个函数,它应该返回一个可序列化的obj版本或引发类型错误。默认值只会引发类型错误。
"""
"""
dumps(python数据) 把python数据转换成json数据
loads(json) 把json数据转换成python数据
"""
import jsonprint(json.dumps(['foo', {'bar': ('baz', None, 1.0, 2)}])) # 输出结果:["foo", {"bar": ["baz", null, 1.0, 2]}]
print(json.dumps("\"foo\bar")) # 输出结果:"\"foo\bar" 里面相当于是一个整体
print(json.dumps('\u1234')) # 输出结果:"\u1234"
print(json.dumps('\\')) # 输出结果:"\\"#如果sort_keys是False,则随机打印结果,如果sortkeys为true,则按顺序打印
print(json.dumps({"c": 0, "b": 0, "a": 0}, sort_keys=True)) # 输出结果:{"a": 0, "b": 0, "c": 0}"""
这里indent是缩进的意思一般写为4 或者2
separators 是( ‘元素之间用逗号隔开’ , ‘key和内容之间’ 用冒号隔开)
这里是 ‘逗号’ , ‘冒号’ 中间的逗号不带引号
"""
print(json.dumps([1, 2, 3, {'4': 5, '6': 7}], separators=(',', ':')))
# 输出结果:[1,2,3,{"4":5,"6":7}]
print(json.dumps({'4': 5, '6': 7}, sort_keys=True, indent=4))
"""
这里indent是缩进的意思一般写为4 或者2
separators 是( ‘元素之间用逗号隔开’ , ‘key和内容之间’ 用冒号隔开)
这里是 ‘逗号’ , ‘冒号’ 中间的逗号不带引号
"""
a = json.dumps([1, 2, 3, {'4': 5, '6': 7}], separators=(',', ':')) # 输出结果:[1,2,3,{"4":5,"6":7}]
print (json.loads(a))#\b就有特殊的意义,单词边界,本身没有什么意思
b = json.dumps("\"foo\bar")
print (json.loads(b)) #"foar
dump()与load()
"""
dump(python,文件对象) 把python转换成json格式并保存到文件中
load(文件对象) 把json格式的文件读取转换成python
"""
import json
data = {
"大数据1班":[{"张三":15,"李四":18,"赵六":20}],
"大数据2班":[{"张三":15,"李四":18,"赵六":20}],
"大数据3班":[{"张三":15,"李四":18,"赵六":20}],
"大数据4班":[{"张三":15,"李四":18,"赵六":20}],
"大数据5班":[{"张三":15,"李四":18,"赵六":20}],
"大数据6班":[{"张三":15,"李四":18,"赵六":20}],
"大数据7班":[{"张三":15,"李四":18,"赵六":20}],
"大数据8班":[{"张三":15,"李四":18,"赵六":20}],
"大数据9班":[{"张三":15,"李四":18,"赵六":20}],
"大数据10班":[{"张三":15,"李四":18,"赵六":20}],
}
with open("f.txt","w") as f:
a = json.dump(data,f)
#print(a) #没有返回值,但是数据已经写进去了r
with open("f.txt","r") as f:
a = json.load(f)
print(a)