Python的json模块基本用法

  • 发布时间:2016年12月20日 10:25
  • 作者:杨仕航
  • 分类标签: Python
  • 阅读(4158)
  • 评论(0)

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))

效果如下:

上一篇:Python轻松实现排列和组合

下一篇:我的网站搭建(第38天) 用UEditor编辑博文

评论列表

智慧如你,不想发表一下意见吗?

新的评论

清空

猜你喜欢

  • 猜测中,请稍等...