python中json模块用法记录

JSON(JavaScript Object Notation,JavaScript对象表示法,读作/ˈdʒeɪsən/)是一种由道格拉斯·克罗克福特构想和设计、轻量级的资料交换语言,该语言以易于让人阅读的文字为基础,用来传输由属性值或者序列性的值组成的数据对象。尽管JSON是JavaScript的一个子集,但JSON是独立于语言的文本格式,并且采用了类似于C语言家族的一些习惯。

JSON 数据格式与语言无关。即便它源自JavaScript,但目前很多编程语言都支持 JSON 格式数据的生成和解析。JSON 的官方 MIME 类型是 application/json,文件扩展名是 .json。

以上是Wikipedia中json文件的定义,我们在平时使用中可能会经常用json文件来存储一些数据的标注,并完成对标注的解析。Python中有个json模块,即可完成我们想要的一些基本功能。
json模块提供了四个功能:dumps、dump、loads、load。这四个功能名称差异不大,但功能差异较大,为此做简单记录方便下次查询。

简单而言:

  • dumps:把数据转换成字符串
  • dump:把数据转换成字符串并存储在文件中
  • loads:把字符串转换成数据类型
  • load:把文件打开从字符串转换成数据类型

1. dump/dumps

dumps/dump可以理解为一个编码的过程,其主要功能是将Python的原始数据类型转换为json字符串,核心是数据类型->字符串
但dumps和dump又有所不同。
dumps末尾带有个s,可以理解为string,也就是说该函数是对字符串进行处理,dumps输入的Python类型,输出的是字符串,此时若想要保存到文件中,还需要用文件读写接口,将字符串写入json文件中。
dump末尾不带s,因此,其可以直接对文件进行处理,也就是其可以传入一个Python类型和一个文件处理句柄,从而一次性完成编码和写入的功能。

代码示例如下:

import json

test_dict = {'bigberg': [7600, {1: [['iPhone', 6300], ['Bike', 800], ['shirt', 300]]}]}
print(test_dict)
print(type(test_dict))
#dumps 将数据转换成字符串
json_str = json.dumps(test_dict)
print(json_str)
print(type(json_str))

with open("../config/record.json","w") as f:
    json.dump(new_dict,f)
    print("加载入文件完成...")

2. loads/load

loads/load可以理解为一个解码的过程,其主要功能是将json字符串转化为Python数据结构,核心是字符串->数据类型
类比dumps和dump的关系,loads也是直接用于处理字符串,而load则可以对文件句柄进行处理。
代码示例如下:

new_dict = json.loads(json_str)
print(new_dict)
print(type(new_dict))

with open("../config/record.json",'r') as load_f:
    load_dict = json.load(load_f)
    print(load_dict)
load_dict['smallberg'] = [8200,{1:[['Python',81],['shirt',300]]}]
print(load_dict)

with open("../config/record.json","w") as dump_f:
    json.dump(load_dict,dump_f)

参考文献

https://www.cnblogs.com/bigberg/p/6430095.html
https://www.runoob.com/python/python-json.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值