Python json模块常用方法

11个月前 (04-27)
JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,遵循欧洲计算机协会制定的 JavaScript 规范(简称 ECMAScript)。JSON 易于人阅读和编写,同时也易于机器解析和生成,能够有效的网信息的传输效率,因此它常被作为网络、程序之间传递信息的标准语言,比如客户端与服务器之间信息交互就是以 JSON 格式传递的。

简单地说,JSON 可以将 JavaScript 对象表示的一组数据转换为字符串格式,以便于在网络、程序间传输这个字符串。并且在需要的时候,您还可以将它转换为编程语言所支持的数据格式。本节主要介绍如何实现 JSON 数据与 Python 数据类型间的相互转换。

Python 语言内置了专门处理 JOSN 数据的模块 —— jons 模块,通过该模块就可以完成 JSON 与 Python 两种数据格式的相互转换。

jons.loads()

该方法可以将 json 格式的字符串转换成 Python 对象(比如列表、字典、元组、整型以及浮点型),其中最常用的是转换为字典类型。示例如下:

# coding:utf8

import json

#JOSN字符串

website_info='{"name" : "c语言中文网","PV" : "50万","UV" : "20万","create_time" : "2010年"}'

py_dict=json.loads(website_info)

print("python字典数据格式:%s;数据类型:%s"% (py_dict,type(py_dict)))

输出结果:

python字典数据格式:{'name': 'c语言中文网', 'PV': '50万', 'UV': '20万', 'create_time': '2010年'};数据类型:<class 'dict'>

注意:上述示例中 JSON 字符串看上去和 Python 字典非常相似,但是其本质不同,JOSN 是字符串类型,而 Python 字典是 dict 类型。

json.dump()

它可以将 Python 对象(字典、列表等)转换为 json 字符串,并将转换后的数据写入到 json 格式的文件中 ,因此该方法必须操作文件流对象。比如当使用爬虫程序完成数据抓取后,有时需要将数据保存为 json 格式,此时就用到了 json.dump() 方法,语法格式如下:

json.dump(object,f,inden=0,ensure_ascii=False)

参数说明如下:

  • object:Python 数据对象,比如字典,列表等

  • f:文件流对象,即文件句柄。

  • indent:格式化存储数据,使 JSON 字符串更易阅读。

  • ensure_ascii:是否使用 ascii 编码,当数据现中文的时候,需要将其设置为 False。


示例示例如下:

import json

ditc_info={"name" : "c语言中文网","PV" : "50万","UV" : "20万","create_time" : "2010年"}

with open("web.josn","a") as f:

json.dump(ditc_info,f,ensure_ascii=False)

打开 web.json 文件,其内容如下所示:

{

"name": "c语言中文网",

"PV": "50万",

"UV": "20万",

"create_time": "2010年"

}

您也可以将 Python 列表转换成 JSON 字符串,并保存 json 文件中,如下所示:

import json

item_list = []

item = {'website': 'C语言中文网', 'url': "c.biancheng网站站点" rel="nofollow" />

["C语言中文网", "c.biancheng网站站点" rel="nofollow" />

import json

site = {'name':'c语言中文网',"url":"c.biancheng网站站点" rel="nofollow" />

{'name': 'c语言中文网', 'url': 'c.biancheng网站站点" rel="nofollow" />

import json

#python字典

item = {'website': 'C语言中文网', 'rank': 1}

# json.dumps之后

item = json.dumps(item,ensure_ascii=False)

print('转换之后的数据类型为:',type(item))

print(item)

输出结果如下:

转换之后的数据类型为: <class 'str'>

{"website": "C语言中文网", "url": "c.biancheng网站站点" rel="nofollow" />