Python是原生态支持json,这点可以从字典和列表结构看出来。
我们可以利用json模块处理json数据。简单介绍一下json模版的用法。
json模块如下语句引入:
import json
常用有2个方法,也是最基本的使用方法:
1、dumps:把字典转成json字符串
2、loads:把json字符串转成字典
#coding:utf-8
import json
test_dict = {'a':1, 'b':2}
#把字典转成json字符串
json_text = json.dumps(test_dict)
print(json_text)
#把json字符串转成字典
json_dict = json.loads(json_text)
print(json_dict)
当然,我写的例子所使用的字典也比较简单。大家可以尝试拟一个复杂的,包含数组的字典。
若你尝试使用dir方法看json模块有什么方法时,会发现还有load、dump方法。这两个方法和上面两个方法少了一个字母s。
这两个方法是为了读写json文件提供的便捷方法。举个栗子,json字符串可以保存到文本文件。若只是使用loads和dumps,代码如下所示。
注意:以下代码涉及到utf-8文件读写,可以参考我前面的文章:
Python读写utf-8的文本文件
1、把字典转成json字符串,并保存到文件中
#coding:utf-8
import json
import codecs
test_dict = {'a':1, 'b':2}
#把字典转成json字符串
json_text = json.dumps(test_dict)
#把json字符串保存到文件
#因为可能json有unicode编码,最好用codecs保存utf-8文件
with codecs.open('1.json', 'w', 'utf-8') as f:
f.write(json_text)
2、从json文件中读取到字典中
#coding:utf-8
import json
import codecs
#从文件中读取内容
with codecs.open('1.json', 'r', 'utf-8') as f:
json_text = f.read()
#把字符串转成字典
json_dict = json.loads(json_text)
上面代码,我们可以用load和dump修改。
1、dump把字典转成json字符串并写入到文件
#coding:utf-8
import json
import codecs
test_dict = {'a':1, 'b':2}
#把字典转成json字符串并写入到文件
with codecs.open('1.json', 'w', 'utf-8') as f:
json.dump(test_dict, f)
2、load从json文件读取json字符串到字典
#coding:utf-8
import json
import codecs
#从json文件读取json字符串到字典
with codecs.open('1.json', 'r', 'utf-8') as f:
json_dict = json.load(f)
这样明显省事很多。
最后,再说一个知识点。
如何把json转成有序的字典
。
众所周知,字典是无序的。所以json的loads方法转换得来的字典本来就是无序的。
但出于某种需求,需要确保顺序正常,按照原本json字符串的顺序。
这个需要在解析的时候,把无序字典换成有序字典。如下代码:
#coding:utf-8
from collections import OrderedDict
import json
json_text = '{ "b": 3, "a": 2, "c": 1}'
json_dict = json.loads(json_text)
print(u"转成普通字典")
for key, value in json_dict.items():
print("key:%s, value:%s" % (key, value))
json_dict = json.loads(json_text, object_pairs_hook=OrderedDict)
print(u"\n转成有序字典")
for key, value in json_dict.items():
print("key:%s, value:%s" % (key, value))
效果如下:
(原创博文,转载请注明来自
杨仕航的博客
!本文链接:
https://yshblog.com/blog/104
)
若对你有帮助,不妨扫一扫右侧的
二维码
打赏支持我 ^_^