jsonpath

import jsonpath, json

obj = {
    "store": {
        "book": [
            {"category": "文学作品",
             "author": "钱钟书",
             "title": "围城",
             "price": 80.5
             },
            {"category": "历史作品",
             "author": "孔子",
             "title": "春秋",
             "price": 90.9
             },
            {"category": "天文作品",
             "author": "天文",
             "title": "史上最强仙人",
             "isbn": "0-553-21311-3",
             "price": 80.9
             },
            {"category": "fiction",
             "author": "J. R. R. Tolkien",
             "title": "The Lord of the Rings",
             "isbn": "0-395-19395-8",
             "price": 22.99
             }
        ],
        "data": {
            "color": "red",
            "price": 19.95,
            "author": "乔丹",
            "book": [
                {"category": "文学作品",
                 "author": "钱钟书",
                 "title": "围城",
                 "price": 8.5555
                 },
                {"category": "历史作品",
                 "author": "孔子",
                 "title": "春秋",
                 "isbn": "0-553-21311-3",
                 "price": 90.9999
                 },
                {"category": "历史作品2",
                 "author": "孔子2",
                 "title": "春秋2",
                 "price": 90.99
                 }
            ]
        }
    }
}

# print(type(json.dumps(obj)))



# authors = jsonpath.jsonpath(obj, '$.store.book[*].author')
# print(f"获取obj.store.book列表内所有元素的author key的值 =======> {authors}")

# authors = jsonpath.jsonpath(obj, '$..author')
# print(f"不区分层级结构,获取obj内所有的author key的值 =======> {authors}")

# store_elements = jsonpath.jsonpath(obj, '$.store.*')
# print(f"store的所有元素 =======> {store_elements}")

# prices = jsonpath.jsonpath(obj, '$.store.*..price')
# print(f"获取store里面的所有东西的price =======> {prices}")
# prices = jsonpath.jsonpath(obj, '$.store.book..price')
# print(f"获取store里book里面的所有东西的price =======> {prices}")


# book3 = jsonpath.jsonpath(obj, '$.store.book[2]')
# print(f"获取store里book里的第三本书 =======> {book3}")

# book_last = jsonpath.jsonpath(obj, '$.store.book[(@.length-1)]')
# print(f"获取store里book里的最后一本书 =======> {book_last}")

# book_1_2 = jsonpath.jsonpath(obj, '$..book[1,2]')
# book_1_2 = jsonpath.jsonpath(obj, '$..book[:1]')
# print(f"获取前面的两本书 =======> {book_1_2}")
# data = jsonpath.jsonpath(obj, "$..book[3][author,title]")
# print(f"获取所有book下的author、title字段 =======> {data}")



# isbn = jsonpath.jsonpath(obj, '$..book[?(@.isbn)]')
# print(f"过滤出所有的包含isbn的书  =======>  {isbn}")

# under10 = jsonpath.jsonpath(obj, '$..book[?(@.price<10)]')
# print(f"过滤出价格低于10的书  =======>  {under10}")
# book_name = jsonpath.jsonpath(obj, '$..book[?(@.title=="春秋")]')
# print(f"过滤名字为春秋的书  =======>  {book_name}")
book_name = jsonpath.jsonpath(obj, '$..book[?(@.title=="春秋")][author,title]')
print(f"过滤名字为春秋的书,取过滤后数据的值  =======>  {book_name}")

all = jsonpath.jsonpath(obj, '$.*')
print(f"获取所有的值  =======>  {all}")

 

posted @ 2022-04-21 11:31  遇事莫慌  阅读(67)  评论(0编辑  收藏  举报