这里写目录标题
Author:qyan.li
Date:2022.6.13
Topic:浅析
Json
文件使用以及借助于Python
语言操作Json
文件
一、写在前面:
~~~~~~~~ 前段时间随手翻python编程与实践,发现其中有一章节讲述Json文件的解析与地图的构建。Json文件自己听说过很多次,也偶有接触,但是始终不太清楚Json文件到底是什么,有什么用,以及怎么使用。所以简单的学习和整理一下有关Json文件的内容,顺便写篇博文记录一下。
二、Json文件简介与python解析
~~~~~~~~
Json文件的详细官方定义,自己也没有深刻的了解,按照个人的理解,Json文件是能够保留原始数据类型的文件
(个人理解)。举个简单的栗子可能会更加的清晰,明确,比如,利用python语言将一个程序生成的列表list = [1,2,3,4,5,6,7,8,9]存入txt文件,当你读取该txt文件时,读取出的数据内容,形式可能是一样的,但是利用type检验数据类型,发现读取出来是字符串,这就意味着此时针对于此对象,已经不能使用list的相关方法进行操作,丧失原来的特性,而只能字符串的方法进行操作。但是在某种程度上,json文件可以弥补这一点:向json文件中写入字典,list取出时可以保留原始的数据类型,方便后续在程序中进行操作。
~~~~~~~~ 在这里可能会涉及序列化和反序列化的概念:序列化是指将对象转化为字节序列,反序列化则是指将字节序列恢复重建为对象。序列化和反序列化的目的在于对象状态的保存和重建。序列化和反序列化使得在传递和保存对象时,可以保证对象的完整性和可传递性。将对象转化为有序字节流,以便在网络上传输或者保存在本地文件中。
~~~~~~~~ 借助于python语言操作json文件,主要是借助于json模块,可以完成json文件的写入和读取,下面会结合具体的代码,简要的说明一下python中json模块的使用:
-
将python对象写入json文件中
~~~~~~~~ 将python对象写入json文件中,主要借助于json模块的dumps和dump函数,dumps()将python对象转换为json对象,dump()将python对象以json对象的形式写入json文件中
def writeIntoJsonFile(): ## 创建python对象 TestDict = { 'name':'liqiyan', 'age':10, 'address':'chengdu', 'friends':['dale','blender','mark'] } TestLst = ['a','b','c','d'] IntoData = [TestDict,TestLst] ## 将python对象转化为json对象 JsonData1 = json.dumps(TestDict) JsonData2 = json.dumps(TestLst) # print(type(JsonData2)) # json对象的格式为字符串str ## 将python对象写入json文件 with open('./Test.json','w') as f: # json.dump(JsonData,f) json.dump(IntoData,f)
将python对象写入json文件注意点Tips:
dump(data,file)函数注意第一个参数为python对象,而并非dumps后的对象,及传入上述代码中的应该为TestDict,TestLst,IntoData类型的python对象,而非JsonData1,JsonData2类型的json对象,如果传入json对象,json文件中的内容会多出许多斜杠
-
读取json文件为python对象
~~~~~~~~ 将json文件中的内容读取出来,主要借助于json模块的load和loads函数,load函数将json文件内容读取出来形成python对象,而loads函数则将json类型的字符串转换为python的对象
def ReadJsonFile(FilePath): ## load函数读取json文件 with open(FilePath,'r') as f: object = json.load(f) print(object) # type->dict ## loads函数还原python对象 TestDict = {'name':'qyan.li','age':10} JsonDict = json.dumps(TestDict) # type->str PythonDict = json.loads(JsonDict) # type->dict
~~~~~~~~ 上述代码展示借助于load函数读取json文件的一般方法,读取出来的直接为转化后的python对象,当json文件中不只有一个数据时,读取出来是以列表的i形式存放的。loads函数作用在于将json对象(与dumps相对应)转化为python对象。
三、小总结
~~~~~~~~ Json文件在某种情况为我们提供方便,尤其在涉及程序生成的变量的文件保存,以后就不必一定使用txt文件,在某些情况下,Json文件可能会是一种更好的选择。