微前端架构如何改变企业的开发模式与效率提升
2486
2022-10-12
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 | 描述 |
| | 根节点 |
| | 现行节点 |
| | 取子节点 |
| 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小时内删除侵权内容。
发表评论
暂时没有评论,来抢沙发吧~