文章目錄
一.JSON基本介紹
JSON(JavaScript Object notation)是一種輕量級的數據交換格式,更加易於閱讀和編寫,同時也方便了機器進行解析和生成。JSON適用於數據交互場景,如網站前臺和後臺之間的數據交互。JSONPath是一種信息抽取類庫,用於從JSON文檔中抽取指定信息
1.語法規則
JSON是比XML更簡單的一種數據交換格式,它採用完全獨立於編程語言的文本格式來存儲和表示數據,其語法規則如下:
(1)使用鍵值對(key:value)表示對象屬性和值
(2)使用逗號 , 分隔多條數據
(3)使用花括號 {} 包含對象
(4)使用方括號 [] 表示數組
2.JSON的取值
數字 字符串 邏輯值 數組 對象
3.JSON與XML比較
JSON和XML都是文本格式語言,它們經常用於數據交換和網絡傳輸。JSON語法格式簡單,層次結構清晰,比XML更易於閱讀。並且它佔用的字符量少,在網絡數據傳輸時,能夠節約帶寬,提高傳輸效率
二.JSON模塊介紹
1.基本介紹
從Python2.6開始加入了json模塊,使用import json即可導入。json模塊提供了Python對象的序列化和反序列化功能
(1)序列化(encoding):將一個python對象編碼轉換爲JSON字符串的過程
(2)反序列化(decoding):將JSON字符串解碼轉換爲Python對象的過程
2.json模塊的基本應用
json模塊提供了4個方法:dumps() dump() loads() load()
(1)dumps()用於將python類型編碼爲JSON字符串
(2)loads()用於把JSON字符串解碼成python對象
(3)dump()將python類型序列化爲JSON對象後寫入文件
(4)load()讀取文件中JSON形式的字符串元素,轉換成python類型
3.JSON類型和Python類型對比
JSON | Python |
---|---|
JSON | Python |
object | dict |
array | list |
string | unicode |
number(int) | int,long |
number(real) | float |
true | True |
false | FALSE |
null | None |
三.JSONPath基本介紹
JSONPath是一種信息抽取庫,是從JSON文檔中抽取指定信息的工具,提供了多種語言實現,包括JavaScript,Python,PHP和Java
安裝JSONPath
pip install jsonpath
三.JSONPath語法
1.JSONPath語法基本瞭解
JSON結構清晰,可讀性高,複雜度低,非常容易匹配。JSONPath的語法與Xpath類似
JSONPath | 描述 |
---|---|
$ | 根節點 |
@ | 現行節點,當前節點 |
.or[] | 取子節點 |
… | 不管什麼位置,選擇所有符合條件的節點 |
* | 匹配所有元素 |
[] | 迭代器標識,如數組下標 |
[,] | 支持迭代器多選 |
?() | 支持過濾操作 |
() | 支持表達式計算 |
2.jsonpath入門案例
以下數據來自與肯德基官網,長沙市部分肯德基店信息
{
"store": {
"Table": [
{
"rownum": 1,
"storeName": "銀盆路",
"addressDetail": "湖南銀雙路奧克斯廣場一樓餐廳",
"pro": "Wi-Fi,點唱機,禮品卡,生日餐會",
"provinceName": "湖南省",
"cityName": "長沙市"
},
{
"rownum": 2,
"storeName": "桐梓坡",
"addressDetail": "湖南桐梓坡路星電光城一層",
"provinceName": "湖南省",
"cityName": "長沙市"
},
{
"rownum": 3,
"storeName": "國慶",
"addressDetail": "湖南人民東路1號",
"pro": "24小時,Wi-Fi,點唱機,禮品卡,生日餐會",
"provinceName": "湖南省",
"cityName": "郴州市"
}
]
}
}
1.導入相關包,讀取json文件
2.相關操作