关于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))
作者:求知鱼

-------------------------------------------

个性签名:你有一个苹果,我有一个苹果,我们交换一下,一人还是只有一个苹果;你有一种思想,我有一种思想,我们交换一下,一个人就有两种思想。

如果觉得这篇文章对你有小小的帮助的话,记得在右下角点个“推荐”哦,博主在此感谢!

独学而无友,则孤陋而寡闻,开源、分享、白嫖!

原文地址:https://www.cnblogs.com/Qiuzhiyu/p/12183008.html