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 json
print(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)
|