周末闲来无事,继续在家写几篇文章吧,之前就发布的主题《Json基础-dump和load用法解析》一直没有往里面填充内容。于是小编准备今天准备加点东西了.我们大家都知道json库,里面的最常用的几个方法就是dumps loads dump load ,在之前的介绍中,已经给大家分享了关于dumps和loads的用法,实际上就是序列化和反序列的用法,传送门:序列化和反序列化。那么本篇教程我们主要给大家分享的是json库中的dump和load用法。
首先我们先来看一个基本的实例:
import read_json
def json_basic():
data={
'ID':1,
"课程":'python精讲',
"机构":'深圳',
"单价":'12.2',
"网址":'http://www.baidu.com'
}
print('原始数据')
print(data)
print('-'*20)
json_str = read_json.dumps(data)
print(json_str)
print('还原数据')
print('-'*20)
json_data = read_json.loads(json_str)
print(json_data)
我们导入json库,首先创建一个data用来保存我们的json数据,然后我们使用json dumps这个方法对dada数据也就是字典进行序列化操作,然后又对序列化操作后的数据进行反序列化操作。
我们来看一下json.dump的用法,看下面的代码:
def json_writer_file():
'''写json文档'''
data={
'ID':1,
"课程":'python精讲',
"机构":'深圳',
"单价":'12.2',
"网址":'http://www.baidu.com'
}
with open('data.json','w',encoding='utf-8') as f:
json.dump(data, f)
定义将数据写入到json文件中,使用dump方法,其实dump方法就是json文件的写入,只不过需要传2个参数,一个是data,一个是写入的对象f。我们看一下写入后的结果:
json_data中的数据如下:
{"\u7f51\u5740": "http://www.baidu.com", "\u8bfe\u7a0b": "python\u7cbe\u8bb2", "ID": 1, "\u673a\u6784": "\u6df1\u5733", "\u5355\u4ef7": "12.2"}
使用dump写入json数据,然后我们使用load读取数据:
def json_read_file():
'''读取json文件'''
with open('data.json') as f: #打开data.json文件
data = json.load(f)
print(data)
if __name__ == '__main__':
json_read_file()
#data = json.load(f) f是读取的对象
输出结果如下:
{u'\u673a\u6784': u'\u6df1\u5733', u'\u7f51\u5740': u'http://www.baidu.com', u'\u5355\u4ef7': u'12.2', u'\u8bfe\u7a0b': u'python\u7cbe\u8bb2', u'ID': 1}
还有就是在读取数据的时候,类型差异。我们定义一个函数:json_type_diff()
def json_type_diff():
'''类型差异'''
# print(json.dumps(False)) #false
# print(json.dumps(None)) #null
data = {
'discontinued':False,
'Title':'iphone7s',
'Category':None,
'Price':5999.0
}
print(json.dumps(data))
if __name__ == '__main__':
json_type_diff()
输出结果如下:
{"Category": null, "Price": 5999.0, "discontinued": false, "Title": "iphone7s"}
布尔值:False 输出时变为小写的false
空置None:输出时变为小写的none
代码环境:
python:.3.6.3
json:2.8.1
操作系统:windows10
开发工具:pycharm201802
来源:oschina
链接:https://my.oschina.net/u/4261936/blog/3925275