tft每日頭條

 > 科技

 > python中json用法

python中json用法

科技 更新时间:2024-08-15 22:12:31

python中json用法?pip install jsonpath下面表格是jsonpath語法與Xpath的完整概述和比較,我來為大家科普一下關于python中json用法?下面希望有你要的答案,我們一起來看看吧!

python中json用法(JSONPath使用之Python編程語言)1

python中json用法

1. 安裝方法

pip install jsonpath

2. jsonpath與Xpath

下面表格是jsonpath語法與Xpath的完整概述和比較。

Xpath

jsonpath

概述

/

$

根節點

.

@

當前節點

/

.or[]

取子節點

*

*

匹配所有節點

[]

[]

疊代器标識(如數組下标,根據内容選值)

//

不管在任何位置,選取符合條件的節點

n/a

[,]

支持疊代器中多選

n/a

?()

支持過濾操作

n/a

()

支持表達式計算

下面我們就通過幾個示例來學習jsonxpath的使用方法。

我們先來看下面這段json數據:

{ "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 } } }

3. 獲取符合條件的節點

假如我需要獲取到作者的名稱該怎麼樣寫呢?

如果通過Python的字典方法來獲取是非常麻煩的,所以在這裡我們可以選擇使用jsonpath.。

具體代碼示例如下所示:

import jsonpath author = jsonpath.jsonpath(data_json, '$.store.book[*].author') print(author)

運行上面的代碼你會發現,成功地獲取到了所有的作者名稱,并保存在列表中。

或者還可以這樣寫:

import jsonpath author = jsonpath.jsonpath(data_json, '$..author') print(author)

4. 使用指定索引

還是使用上面的json數據,假如我現在需要獲取第三本書的價格。

third_book_price = jsonpath.jsonpath(data_json, '$.store.book[2].price') print(third_book_price)

運行上面的代碼,你會發現成功地獲取到了第三本書的價格。

5. 使用過濾器

isbn_book = jsonpath.jsonpath(data_json, '$..book[?(@.isbn)]') print(isbn_book) print(type(isbn_book))

通過運行上面的代碼,你會發現,成功地将含有isbn編号的書籍過濾出來了。

同樣的道理,根據上面的例子,我們也可以将價格小于10元的書過濾出來。

book = jsonpath.jsonpath(data_json, '$..book[?(@.price<10)]') print(book) print(type(book))

通過運行上面的代碼,你會發現這裡已經成功地将價格小于10元的書提取出來了。

jsonpath其實是非常适合用來獲取json格式的數據的一款工具,最重要的是這款工具輕量簡單容使用。關于jsonpath的介紹到這裡就結束了,開啟您的實戰演練吧!

,

更多精彩资讯请关注tft每日頭條,我们将持续为您更新最新资讯!

查看全部

相关科技资讯推荐

热门科技资讯推荐

网友关注

Copyright 2023-2024 - www.tftnews.com All Rights Reserved