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