Json基础-dump和load用法

周末闲来无事,继续在家写几篇文章吧,之前就发布的主题《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

猜你喜欢

转载自www.cnblogs.com/fighter007/p/9231438.html