美文网首页
jsonpath解析

jsonpath解析

作者: hcc_9bf4 | 来源:发表于2019-06-03 22:17 被阅读0次

2019-06-03

  • jsonpath用来解析json数据使用的

python处理json格式用到的函数

import json 导入库

  • json.dumps() :将字典或者列表转化为json格式的字符串
    例如如下试验代码:
import json

lt=[
    {'name':'王宝强','age':'30'},
    {'name':'贾乃亮','age':'36'},
    {'name':'马荣荣','age':'33'},
    {'name':'宋吉吉','age':'40'},
    {'name':'李小璐','age':'43'},
    ]

string=json.dumps(lt)

print(string)

显示json格式字符串为

[{"name": "\u738b\u5b9d\u5f3a", "age": "30"}, {"name": "\u8d3e\u4e43\u4eae", "age": "36"}, {"name": "\u9a6c\u8363\u8363", "age": "33"}, {"name": "\u5b8b\u5409\u5409", "age": "40"}, {"name": "\u674e\u5c0f\u7490", "age": "43"}]
[Finished in 0.2s]
  • json.loads():将json格式字符串转化为python对象
    例如如下代码:
import json

lt=[
    {'name':'王宝强','age':'30'},
    {'name':'贾乃亮','age':'36'},
    {'name':'马荣荣','age':'33'},
    {'name':'宋吉吉','age':'40'},
    {'name':'李小璐','age':'43'},
    ]

string=json.dumps(lt)
# print(string)
obj=json.loads(string)
print(type(obj))

显示对象为list,如下,显示内容实际为lt

<class 'list'>
[Finished in 0.2s]
  • json.dump():将字典或者列表转化为json格式的字符串并且写入到文件中
    例如如下代码:
import json

lt=[
    {'name':'王宝强','age':'30'},
    {'name':'贾乃亮','age':'36'},
    {'name':'马荣荣','age':'33'},
    {'name':'宋吉吉','age':'40'},
    {'name':'李小璐','age':'43'},
    ]

# string=json.dumps(lt)
# print(string)
# obj=json.loads(string)
# print(type(obj))
json.dump(lt,open('json.txt','w',encoding='utf8'

运行后会在本地生成一个json.txt文件


json.txt文件内容为:


  • json.load():从文件中读取json格式字符串,转化为python对象
    例如如下代码:
import json

lt=[
    {'name':'王宝强','age':'30'},
    {'name':'贾乃亮','age':'36'},
    {'name':'马荣荣','age':'33'},
    {'name':'宋吉吉','age':'40'},
    {'name':'李小璐','age':'43'},
    ]

# string=json.dumps(lt)
# print(string)
# obj=json.loads(string)
# print(type(obj))
# json.dump(lt,open('json.txt','w',encoding='utf8'))
obj=json.load(open('json.txt','r',encoding='utf8'))
print(type(obj))

显示为list对象,实际为lt列表如下:

<class 'list'>
[Finished in 0.2s]

以上方式均为python处理方式

前端处理方式(了解下即可)

将json格式字符串转化为js对象

jsonpath 和 xpath 区别:

xpath索引下标是从1开始的
jsonpath索引下标是从0开始

本地book.json文件数据案例:

{ "store": {
    "book": [ 
      { "category": "文学",
        "author": "路遥",
        "title": "平凡的世界",
        "price": 18.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
    }
  }
}

方法案例使用:

import jsonpath
import json
#将json格式字符串转化为python对象
obj=json.load(open('book.json','r',encoding='utf8'))
print(obj)

显示所有book.json内容,将其转化为obj对象

{'store': {'book': [{'category': '文学', 'author': '路遥', 'title': '平凡的世界', 'price': 18.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}}}
[Finished in 0.1s]

查找book下面所有的author

import jsonpath
import json
#将json格式字符串转化为python对象
obj=json.load(open('book.json','r',encoding='utf8'))
# print(obj)
#写【0】代表查询第一本书的作者
ret=jsonpath.jsonpath(obj,'$.store.book[*].author')
print(ret)

显示:

['路遥', '席慕容', '二月河', '琼瑶']
[Finished in 0.1s]

找到所有author

import jsonpath
import json
#将json格式字符串转化为python对象
obj=json.load(open('book.json','r',encoding='utf8'))
#找到所有author
ret=jsonpath.jsonpath(obj,'$..author')
print(ret)

显示:

['路遥', '席慕容', '二月河', '琼瑶']
[Finished in 0.1s]

查找store下面所有节点

import jsonpath
import json
#将json格式字符串转化为python对象
obj=json.load(open('book.json','r',encoding='utf8'))
#查找store下面所有节点
ret=jsonpath.jsonpath(obj,'$.store.*')
print(ret)

显示:

[[{'category': '文学', 'author': '路遥', 'title': '平凡的世界', 'price': 18.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}], {'color': 'red', 'price': 19.95}]
[Finished in 0.1s]

store里面所有东西的price

import jsonpath
import json
#将json格式字符串转化为python对象
obj=json.load(open('book.json','r',encoding='utf8'))
#store里面所有东西的price
ret=jsonpath.jsonpath(obj,'$.store..price')
print(ret)

显示:

[18.95, 12.99, 8.99, 22.99, 19.95]
[Finished in 0.1s]

book下面第三个book,返回的是一个列表

import jsonpath
import json
#将json格式字符串转化为python对象
obj=json.load(open('book.json','r',encoding='utf8'))

# book下面第三个book,返回的是一个列表
ret=jsonpath.jsonpath(obj,'$..book[2]')
print(ret)

显示:

[{'category': '历史', 'author': '二月河', 'title': '康熙大帝', 'isbn': '0-553-21311-3', 'price': 8.99}]
[Finished in 0.1s]

book下面最后个book,返回的是一个列表

import jsonpath
import json
#将json格式字符串转化为python对象
obj=json.load(open('book.json','r',encoding='utf8'))

# book下面最后个book,返回的是一个列表
ret=jsonpath.jsonpath(obj,'$..book[(@.length-1)]')
print(ret)

显示:

[{'category': '言情', 'author': '琼瑶', 'title': '还珠格格', 'isbn': '0-395-19395-8', 'price': 22.99}]
[Finished in 0.1s]

book下面前两本书

import jsonpath
import json
#将json格式字符串转化为python对象
obj=json.load(open('book.json','r',encoding='utf8'))
#book下面前两本书
ret=jsonpath.jsonpath(obj,'$..book[0,1]')
#用切片也可以
# ret=jsonpath.jsonpath(obj,'$..book[:2]')
print(ret)

显示:

[{'category': '文学', 'author': '路遥', 'title': '平凡的世界', 'price': 18.95}, {'category': '文学', 'author': '席慕容', 'title': '穆斯林的葬礼', 'price': 12.99}]
[Finished in 0.1s]

查找所有的包含isbn这个键的所有book

import jsonpath
import json
#将json格式字符串转化为python对象
obj=json.load(open('book.json','r',encoding='utf8'))
#查找所有的包含isbn这个键的所有book
ret=jsonpath.jsonpath(obj,'$..book[?(@.isbn)]')

print(ret)

显示:

[{'category': '历史', 'author': '二月河', 'title': '康熙大帝', 'isbn': '0-553-21311-3', 'price': 8.99}, {'category': '言情', 'author': '琼瑶', 'title': '还珠格格', 'isbn': '0-395-19395-8', 'price': 22.99}]
[Finished in 0.1s]

查找价格低于10的所有书

import jsonpath
import json
#将json格式字符串转化为python对象
obj=json.load(open('book.json','r',encoding='utf8'))
#查找价格低于10的所有书
# ret=jsonpath.jsonpath(obj,'$..book[?(@.price<10)]')
print(ret)

显示:

[{'category': '历史', 'author': '二月河', 'title': '康熙大帝', 'isbn': '0-553-21311-3', 'price': 8.99}]
[Finished in 0.1s]

以上主要学习将json格式字符串转化为python对象,然后使用对应方法

相关文章

  • JSONPath入门及测试

    JSONPath入门 JSONPath - 是xpath在json的应用,是参照xpath表达式来解析XML文档的...

  • jsonpath解析

    2019-06-03 jsonpath用来解析json数据使用的 python处理json格式用到的函数 impo...

  • 07-数据提取-jsonpath

    jsonpath用来解析多层嵌套的json数据jsonpath官方文档 安装 语法 使用 字典的根节点为最外部大括...

  • JSONPath解析json

    JSONPath 用来解析多层嵌套的json数据,JsonPath 是一种信息抽取类库,是从JSON文档中抽取指定...

  • jsonpath模块01

    JSONPath 表达式 JSONPath 是参照,xpath表达式来解析xml文档的方式,json数据结构通常是...

  • python中jsonpath模块

    简介jsonpath表达式与xPath表达式类似,jsonpath是一种信息抽取类库,提供的json解析非常强大,...

  • jsonpath 2022-01-16

    jsonpath是用于解析json文件的强大工具,不同语言都有各自的实现 jsonpath的设计思想和正则表达式相...

  • JsonPath解析Json数据

    JsonPath to JSON is what XPATH is to XML, a simple way to...

  • json解析工具jsonpath

    JsonPath提供的json解析非常强大,它提供了类似正则表达式的语法,基本上可以满足所有你想要获得的json内...

  • 用jsonpath解析文档

    今天请求的网站是360教育的文章索引页,本来想着用bs4库来解析复习一下BS4库。然而没有想到返回的内容是JSON...

网友评论

      本文标题:jsonpath解析

      本文链接:https://www.haomeiwen.com/subject/lllhxctx.html