赞
踩
JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式,它使得人们很容易的进行阅读和编写。同时也方便了机器进行解析和生成。适用于进行数据交互的场景,比如网站前台与后台之间的数据交互。
Python 2.7及之后版本,自带了JSON模块,直接import json
就可以使用了。
官方文档:http://docs.python.org/library/json.html
Json在线解析网站:http://www.json.cn/#
看它的名字你就能知道,这Json Path和JSON文档有关系,正如XPath之于XML文档一样,JsonPath为Json文档提供了解析能力,通过使用JsonPath,你可以方便的查找节点、获取想要的数据,JsonPath是Json版的XPath。
JsonPath的语法相对简单,它采用开发语言友好的表达式形式,如果你了解类C语言,对JsonPath就不会感到不适应。
json简单说就是javascript中的对象和数组,所以这两种结构就是对象和数组两种结构,通过这两种结构可以表示各种复杂的结构;
json模块提供了四个功能:dumps、dump、loads、load,用于字符串 和 python数据类型间进行转换。
把Json格式字符串解码转换成Python对象 从json到python的类型转化对照如下:
JSON | Python |
object | dict |
array | list |
string | unicode |
number(int) | int,long |
number(real) | float |
true(false) | True(False) |
null | None |
- import json
-
- strDict = '{"city": "广州", "name": "小黑"}'
-
- r = json.loads(strDict) # json数据自动按Unicode存储
-
- print(r)
结果如下:
{‘city’: ‘广州’, ‘name’: ‘小黑’}
读取文件中json形式的字符串元素 转化成python类型
- import json
- s = json.load(open('test.json','r',encoding='utf-8'))
- print(s,type(s))
结果如下:
{‘city’: ‘广州’, ‘name’: ‘小黑’} <class ‘dict’>
实现python类型转化为json字符串,返回一个str对象 把一个Python对象编码转换成Json字符串
- import json
-
- listStr = [1, 2, 3, 4]
- dictStr = {"city": "北京", "name": "大猫"}
-
- s1 = json.dumps(listStr)
- s2 = json.dumps(dictStr,ensure_ascii=False)
-
- print(s1,type(s1))
- print(s2)
结果如下:
[1, 2, 3, 4] <class ‘str’>{“city”: “北京”, “name”: “大猫”} <class ‘str’>
将Python内置类型序列化为json对象后写入文件
- import json
-
- json_info = "{'age': '12'}"
- file = open('ceshi.json','w',encoding='utf-8')
- json.dump(json_info,file)
结果如下:
ceshii,json(目录文件产生)
JsonPath 是一种信息抽取类库,是从JSON文档中抽取指定信息的工具,提供多种语言实现版本,包括:Javascript, Python, PHP 和 Java。
JsonPath 对于 JSON 来说,相当于 XPATH 对于 XML。
下载地址:https://pypi.python.org/pypi/jsonpath
安装方法:点击Download URL链接下载jsonpath,解压之后执行python setup.py install
官方文档:http://goessner.net/articles/JsonPath
可以在http://jsonpath.com/站点进行验证JsonPath的执行效果。
Json结构清晰,可读性高,复杂度低,非常容易匹配,下表中对应了XPath的用法。
可以在JsonPath表达式执行后进行调用,其输入值为表达式的结果。
过滤器是用于过滤数组的逻辑表达式,一个通常的表达式形如:[?(@.age > 18)],可以通过逻辑表达式&&或||组合多个过滤器表达式,例如[?(@.price < 10 && @.category == ‘fiction’)],字符串必须用单引号包围,例如[?(@.color == ‘blue’)]。
- {
- "store": {
- "book": [
- {
- "category": "reference",
- "author": "Nigel Rees",
- "title": "Sayings of the Century",
- "price": 8.95
- },
- {
- "category": "fiction",
- "author": "Evelyn Waugh",
- "title": "Sword of Honour",
- "price": 12.99
- },
- {
- "category": "fiction",
- "author": "Herman Melville",
- "title": "Moby Dick",
- "isbn": "0-553-21311-3",
- "price": 8.99
- },
- {
- "category": "fiction",
- "author": "J. R. R. Tolkien",
- "title": "The Lord of the Rings",
- "isbn": "0-395-19395-8",
- "price": 22.99
- }
- ],
- "bicycle": {
- "color": "red",
- "price": 19.95
- }
- }
- }
接下来我们看一下如何对这个文档进行解析:
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。