JSON的數據提取
1.學習目標
- 掌握JSON相關的方法(
load
,loads
,dump
,dumps
) - 了解JSONPath的使用(提取JSON中的數據)
2 復習什么是JSON
JSON(JavaScript Object Notation) 是一種輕量級的數據交換格式,它使得人們很容易的進行閱讀和編寫。同時也方便了機器進行解析和生成。適用于進行數據交互的場景,比如網站前臺與后臺之間的數據交互。
3 JSON模塊中方法的學習
json.load()
: 從文件對象中讀取JSON數據。json.loads()
: 從字符串中讀取JSON數據。json.dump()
: 將Python對象寫入文件對象,格式為JSON。json.dumps()
: 將Python對象轉換為JSON格式的字符串。
4 JSONPath模塊的學習
4.1 JSONPath介紹
JSONPath 是一種信息抽取類庫,是從JSON文檔中抽取指定信息的工具,提供多種語言實現版本,包括:Javascript, Python,PHP 和 Java。
4.2 JsonPath 對于 JSON 來說,相當于 XPath 對于 XML。
安裝方法:pip install jsonpath官方文檔:[JSONPath - XPath for JSON](http://goessner.net/articles/JsonPath)
4.3 JsonPath語法:
- 使用點符號
.
來表示當前對象。 - 使用方括號
[]
來表示數組索引或對象屬性。 - 使用星號
*
作為通配符匹配所有成員名或數組索引。 - 使用
..
表示遞歸下降,從當前位置開始,遍歷所有子元素。 - 使用
[start:end:step]
表示數組切片操作。
4.4 語法使用示例
book_dict = { "store": {"book": [ { "category": "reference","author": "Nigel Rees","title": "Sayings of the Century","price": 8.95},# ... 其他書籍信息],"bicycle": {"color": "red","price": 19.95}}
}from jsonpath import jsonpathprint(jsonpath(book_dict, '$..author')) # 返回所有作者的列表
4.5 JSONPath表達式示例表
JSONPath | 結果 | 說明 |
---|---|---|
$.store.book[*].author | store 中的所有book 的作者 | 使用通配符* 匹配所有book 元素 |
$..author | 所有作者 | 使用.. 遞歸匹配所有author |
$.store.* | store 下的所有元素 | 使用點符號. 匹配所有直接子元素 |
$.store..price | store 中的所有內容的價格 | 使用雙點.. 匹配所有嵌套價格 |
$..book[2] | 第三本書 | 數組索引從0開始,因此是第三本書 |
$..book[(@.length-1)] | $..book[-1:] | 最后一本書 | 使用腳本表達式或負索引 |
$..book[0,1] | $..book[:2] | 前兩本書 | 使用數組切片或索引列表 |
$..book[?(@.isbn)] | 有ISBN的所有書 | 使用過濾器表達式匹配有ISBN屬性的書 |
$..book[?(@.price<10)] | 價格小于10的所有書 | 使用過濾器表達式匹配價格 |
$..* | 獲取所有數據 | 使用通配符匹配所有元素 |