关于json数据的过滤获取
Posted 求知鱼
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了关于json数据的过滤获取相关的知识,希望对你有一定的参考价值。
json数据:book.json
{ "store": { "book": [ { "category": "文学", "author": "路遥", "title": "平凡的世界", "price": 8.95 }, { "category": "文学", "author": "席慕蓉", "title": "穆斯林的葬礼", "price": 12.99 }, { "category": "历史", "author": "二月河", "title": "康熙大帝", "isbn": "0-553-21311-3", "price": 8.99 }, { "category": "言请", "author": "琼瑶", "title": "还珠格格", "isbn": "0-395-19395-8", "price": 22.99 } ], "bicycle": { "color": "red", "price": 19.95 } }, "expensive": 10 }
处理、过滤:
import json import jsonpath #将json格式字符串转化为python对象 ojb = json.load(open(‘book.json‘,‘r‘,encoding=‘utf8‘)) #print(ojb) #查找所有书的所有作者 #book是一个列表 #ret = jsonpath.jsonpath(ojb,‘$.store.book[*].author‘) #book[*]找所有 后面要加* #ret= jsonpath.jsonpath(ojb,‘$..author‘) #print(ret) #查找store下面所有字典 返回一个列表 # ret= jsonpath.jsonpath(ojb,‘$.store.*‘) # print(len(ret)) #查找store下面所有的price # ret= jsonpath.jsonpath(ojb,‘$.store..price‘) # print(ret) # print(len(ret)) #找第三本书 返回一个列表 # ret= jsonpath.jsonpath(ojb,‘$..book[2]‘) #json的下标是从0开始 # ret= jsonpath.jsonpath(ojb,‘$..book[0,1]‘) # 找前两本书 # print(ret) # print(len(ret)) #找最后一本书 # ret= jsonpath.jsonpath(ojb,‘$..book[(@.length-1)]‘) # print(ret) # print(len(ret)) #有isbn元素的书 #ret= jsonpath.jsonpath(ojb,‘$..book[?(@.isbn)]‘) # print(ret) # print(len(ret)) #找键price:价格低于10的书 ret= jsonpath.jsonpath(ojb,‘$..book[?(@.price<10)]‘) print(ret) print(len(ret))
json数据、python对象、字典格式的相互转化
jsonpath模块 用来解析josn数据使用的 python处理josn格式用到的函数 import json json.dumps() :将字典或者列表转化为json格式的字符串 json.loads() :将json格式的字符串转化为python对象 记忆方法:前两个有s,是字符串和两个格式之间的转化 json.dump() :将字典或者列表转化为json格式的字符串并且写入到文件中 json.load() :从文件中读取json格式字符串,转化为python对象 记忆方法:后两个不带s,属于写入文件和从文件中读取 import json it = [{‘name‘:‘王二小‘,‘age‘:‘30‘}, {‘name‘:‘周三‘,‘age‘:‘29‘}, {‘name‘:‘李四‘,‘age‘:‘28‘}, {‘name‘:‘王五‘,‘age‘:‘27‘} ] string = json.dumps(it) #将字典或者列表转化为json格式的字符串 #print(string) obj = json.loads(string) #将json格式的字符串转化为python对象 #print(type(obj))
以上是关于关于json数据的过滤获取的主要内容,如果未能解决你的问题,请参考以下文章