一、json模塊
1、loads()方法,json字符串轉python對象。
list_json = '[1,2,3,4]'
dict_json = '{"key1":{"k1":"v1","k2":"v2"},"key2":{"k1":"v1","k2":"v2"}}'
list_ret = json.loads(list_json)
dict_ret = json.loads(dict_json)
會把true,false轉爲True,False,如果json字符串中的有True,False會報錯。
2、dumps()方法,python對象轉json字符串。
list_ = [1,2,3,4]
dict_ = {"key1":{"k1":"v1","k2":"v2"},"key2":{"k1":"v1","k2":"v2"}}
list_json = json.dumps(list_)
dict_json = json.dumps(dict_)
會把True,False轉爲true,false。
二、jsonpath語法與xpath的對比
描述 | xpath | jsonpath |
---|---|---|
根元素 | / | $ |
當前元素 | . | @ |
子元素 | / | .或者[] |
父元素 | … | 無 |
不計位置 | // | … |
通配符,所有元素 | * | * |
屬性 | @ | 無 |
子元素操作符 | [] | [] |
或 | | | [XXX,XXX,XXX] |
元素分割 | 無 | [start:end] |
過濾表達式 | [] | ?() |
腳本表達式 | 無 | () |
分組 | () | 無 |
三、使用案例
{ "store": {
"book": [
{ "category": "reference",
"author": "小張",
"title": "python從入門到精通",
"price": 8.95
},
{ "category": "fiction",
"author": "小趙",
"title": "python從入門到放棄",
"price": 12.99
},
{ "category": "fiction",
"author": "小李",
"title": "python從入門到脫髮",
"isbn": "0-553-21311-3",
"price": 8.99
},
{ "category": "fiction",
"author": "小明",
"title": "python從入門到入土",
"isbn": "0-395-19395-8",
"price": 22.99
}
],
"bicycle": {
"color": "red",
"price": 19.95
}
}
}
表達式 | 結果 |
---|---|
$.store.book[*].author | 書店所有書的作者 |
$…author | 所有的作者 |
$.store.* | store的所有元素 |
$.store…price | store裏面所有東西的price |
$…book[(@.length-1)] | 最後一本書 |
…book[0:2] 、$…book[:2] | 前面的兩本書。 |
$…book[?(@.isbn)] | 過濾出所有的包含isbn的書。 |
$…book[?(@.price<10)] | 過濾出價格低於10的書。 |
$…* | 所有元素 |
三、python中使用jsonpath、
import jsonpath
#匹配成功返回結果列表,未匹配成功返回False
ret = jsonpath.jsonpath(obj,'表達式')
obj必須爲python對象,如果是json字符串需要使用json.loads方法轉換成python對象。