美文网首页
python中关于json的函数

python中关于json的函数

作者: IT_小马哥 | 来源:发表于2019-07-21 21:37 被阅读0次

最近做项目用到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=(',', ':')))

相关文章

网友评论

      本文标题:python中关于json的函数

      本文链接:https://www.haomeiwen.com/subject/xdivlctx.html