最近做项目用到json文件比较多,特做一个记录。
其实我主要用load和dumps就足够了,对于json一般无非是读出来,或者把一个字典写进去而已。
1、load()函数
将json文件数据读到内存,转换为字典类型,这个字典就是python标准的字典类型,可以直接用了。
with open('new.json','r' ,encoding ='utf-8') as f:
temp_dict = json.load(f)
print(type(temp_dict)) #输出:<class 'dict'>
2、dumps()函数
主要将dict类型的数据转换为str,这个str就是字符串类型,可以直接用了。
其实还是为了写文件方便用的,因为写文件时str类型既可以用于write()函数,又可以用于writelines()函数,因此写文件前先用dumps方法转了就行。
with open('new.json','r' ,encoding ='utf-8') as f:
temp_dict = json.load(f)
temp_str = json.dumps(temp_dict)
print(type(temp_str)) #输出<class 'str'>
dumps函数有几个比较重要的参数。一般直接写入文件就一行,无法浏览,为了还原成标准的,人类可读的json格式,也就是一般人说的自动换行,需要加入参数。
(1)ensure_ascii = False 加入解决中文乱码的问题
(2)indent 表示json的缩进,一般都为4,因为大家习惯一个缩进是四个空格
(3)separators分隔符,默认是(',', ':'),字典之间用“,”隔开,而key和value之间用“:”隔开
因此一般我直接都这样写入文件。
#result_dict表示的是需要写入的数据,字典类型。
with open (filename,'w',encoding = 'utf-8') as fp:
fp.writelines(json.dumps(result_dict,ensure_ascii=False,indent=4, separators=(',', ':')))
3、 loads()将str转换为dict
有时我们通过http接口,获取的数据看起来是字典或者json格式的,其实它的格式是str类型的,因此也必须先经过这个函数。如果你的返回的文件是列表,这函数就转换为列表 了,如果你返回的是字典样子的str,就转换为字典了
with open('new.json','r' ,encoding ='utf-8') as f:
temp_dict = json.load(f)
temp_str = json.dumps(temp_dict)
str_to_dict = json.loads(temp_str)
print(type(str_to_dict)) #<class 'dict'>
4、dump函数将dict转为str写入文件
比dump的参数多了一个文件句柄fp,即,在dump函数里可以直接传入open()函数或者文件fp
fp= open('result.json','w',encoding = 'utf-8')
json.dump(result_dict,fp,ensure_ascii=False,indent=4, separators=(',', ':'))
fp.colse()
就是dumps()函数返回的是str,然后作为wirte()或者writelines()函数的参数
dump()函数返回的是写好的文件,文件句柄是它的参数。
有时我们读写中文的时候,中文的字是一个方框框,就像“口”,这一般是utf-8无法解析,可以给open函数加一个参数errors='ignore'
with open(path_zg, 'w', encoding='utf-8', errors='ignore') as f:
f.writelines(json.dumps(result_dict, ensure_ascii=False, indent=4, separators=(',', ':')))
网友评论