Python | JSON 数据解析(Json & JsonPath)

网友投稿 2300 2022-10-12

Python | jsON 数据解析(Json & JsonPath)

Python | JSON 数据解析(Json & JsonPath)

JSON 是一种轻量级的数据交换格式。它基于 ECMAScript的一个子集,采用完全独立于编程语言的文本格式来存储和表示数据。简洁和清晰的层次结构使得 JSON 成为理想的数据交换语言。 易于人阅读和编写,同时也易于机器解析和生成,并有效地提升网络传输效率。本文将简单介绍Python里JSON模块和JsonPath模块的一些用法。

一、什么是JSON?

JSON(JavaScript Object Notation, JS 对象简谱) 是一种轻量级的数据交换格式。它基于 ECMAScript (欧洲计算机协会制定的js规范)的一个子集,采用完全独立于编程语言的文本格式来存储和表示数据。简洁和清晰的层次结构使得 JSON 成为理想的数据交换语言。 易于人阅读和编写,同时也易于机器解析和生成,并有效地提升网络传输效率。

简单地说,JSON 可以将 JavaScript 对象中表示的一组数据转换为字符串,然后就可以在网络或者程序之间轻松地传递这个字符串,并在需要的时候将它还原为各编程语言所支持的数据格式,例如在 PHP 中,可以将 JSON 还原为数组或者一个基本对象。在用到AJAX时,如果需要用到数组传值,这时就需要用JSON将数组转化为字符串。

二、JSON vs XML

JSON 与 XML 的相同之处:

JSON 和 XML 数据都是 "自我描述" ,都易于理解。JSON 和 XML 数据都是有层次的结构JSON 和 XML 数据可以被大多数编程语言使用

JSON 与 XML 的不同之处:

JSON 不需要结束标签JSON 更加简短JSON 读写速度更快JSON 可以使用数组

为什么 JSON 比 XML 更好?

XML 比 JSON 更难解析。

JSON 可以直接使用现有的 JavaScript 对象解析。

针对 AJAX 应用,JSON 比 XML 数据加载更快,而且更简单:

使用 XML

获取 XML 文档使用 XML DOM 迭代循环文档接数据解析出来复制给变量

使用 JSON

获取 JSON 字符串JSON.Parse 解析 JSON 字符串

三、Python中JSON模块的使用

Python3 中可以使用 json 模块来对 JSON 数据进行编解码,它主要提供了四个方法: dumps、dump、loads、load。

json.dumps() :将 Python 对象编码成 JSON 字符串

json.loads() :将已编码的 JSON 字符串解码为 Python 对象

在 json 的编解码过程中,Python 的原始类型与 json 类型会相互转换,具体的转化对照如下:

Python 编码为 JSON 类型转换对应表:

Python

JSON

dict

object

list, tuple

array

str

string

int, float, int- & float-derived Enums

number

True

true

False

false

None

null

JSON 解码为 Python 类型转换对应表:

JSON

Python

object

dict

array

list

string

str

number (int)

int

number (real)

float

true

True

false

False

null

None

json.dump() :将Python内置类型序列化为json对象后写入文件

json.load() :读取文件中json形式的字符串元素转化为Python类型

如果你要处理的是文件而不是字符串,你可以使用 json.dump() 和 json.load() 来编码和解码JSON数据。例如:

# 写入 JSON 数据with open('data.json', 'w') as f: json.dump(data, f) # 读取数据with open('data.json', 'r') as f: data = json.load(f)

四、Python中JsonPath模块的使用

JsonPath 是一种信息抽取类库,是从JSON文档中抽取指定信息的工具,提供多种语言实现版本,包括:Javascript, Python, PHP 和 Java。

JsonPath 对于 JSON 来说,相当于 XPATH 对于 XML。

Json结构清晰,可读性高,复杂度低,非常容易匹配,下表中对应了XPath的用法。

XPath

JSONPath

描述

​/​

​$​

根节点

​.​

​@​

现行节点

​/​

​.​​​or​​[]​

取子节点

​..​

n/a

取父节点,Jsonpath未支持

​//​

​..​

就是不管位置,选择所有符合条件的条件

​*​

​*​

匹配所有元素节点

​@​

n/a

根据属性访问,Json不支持,因为Json是个Key-value递归结构,不需要。

​[]​

​[]​

迭代器标示(可以在里边做简单的迭代操作,如数组下标,根据内容选值等)

​|​

​[,]​

支持迭代器中做多选。

​[]​

​?()​

支持过滤操作.

n/a

​()​

支持表达式计算

​()​

n/a

分组,JsonPath不支持

注:decode的作用是将其他编码的字符串转换成 Unicode 编码encode的作用是将 Unicode 编码转换成其他编码的字符串一句话:UTF-8是对Unicode字符集进行编码的一种编码方式

五、实例

暂时没有喔o(╥﹏╥)o

箴言:因为这些东西是非常简单的。不要抱怨自己学不会,那是因为你没有足够用心。

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:MyBatis 和 jeesite多表查询示例详解
下一篇:WAFer 基于C语言的超轻可伸缩的服务器端web应用程序框架(wafer连接器是什么意思)
相关文章

 发表评论

暂时没有评论,来抢沙发吧~