Python-json模块

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类型对招表

PythonJSON
dictobject
list,tuplearray
strstring
int,float,Enumsnumber
Truetrue
Falsefalse
Nonenull

json类型转换Python类型对照表

JSONPython
objectdict
arraylist
stringstr
number (int)int
number (real)float
trueTrue
falseFalse
nullNone

常用方法

方法功能
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)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值