Python从0到100(三十八):json字符串的数据提取

在这里插入图片描述

JSON的数据提取

1.学习目标

  1. 掌握JSON相关的方法(load, loads, dump, dumps
  2. 了解JSONPath的使用(提取JSON中的数据)

2 复习什么是JSON

JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式,它使得人们很容易的进行阅读和编写。同时也方便了机器进行解析和生成。适用于进行数据交互的场景,比如网站前台与后台之间的数据交互。

3 JSON模块中方法的学习

  • json.load(): 从文件对象中读取JSON数据。
  • json.loads(): 从字符串中读取JSON数据。
  • json.dump(): 将Python对象写入文件对象,格式为JSON。
  • json.dumps(): 将Python对象转换为JSON格式的字符串。

4 JSONPath模块的学习

4.1 JSONPath介绍

JSONPath 是一种信息抽取类库,是从JSON文档中抽取指定信息的工具,提供多种语言实现版本,包括:Javascript, Python,PHP 和 Java。

4.2 JsonPath 对于 JSON 来说,相当于 XPath 对于 XML。
安装方法:pip install jsonpath

官方文档:[JSONPath - XPath for JSON](http://goessner.net/articles/JsonPath)
4.3 JsonPath语法:
  • 使用点符号.来表示当前对象。
  • 使用方括号[]来表示数组索引或对象属性。
  • 使用星号*作为通配符匹配所有成员名或数组索引。
  • 使用..表示递归下降,从当前位置开始,遍历所有子元素。
  • 使用[start:end:step]表示数组切片操作。
4.4 语法使用示例
book_dict = { 
  "store": {
    "book": [ 
      { "category": "reference",
        "author": "Nigel Rees",
        "title": "Sayings of the Century",
        "price": 8.95
      },
      # ... 其他书籍信息
    ],
    "bicycle": {
      "color": "red",
      "price": 19.95
    }
  }
}

from jsonpath import jsonpath

print(jsonpath(book_dict, '$..author')) # 返回所有作者的列表
4.5 JSONPath表达式示例表
JSONPath 结果 说明
$.store.book[*].author store中的所有book的作者 使用通配符*匹配所有book元素
$..author 所有作者 使用..递归匹配所有author
$.store.* store下的所有元素 使用点符号.匹配所有直接子元素
$.store..price store中的所有内容的价格 使用双点..匹配所有嵌套价格
$..book[2] 第三本书 数组索引从0开始,因此是第三本书
$..book[(@.length-1)] | $..book[-1:] 最后一本书 使用脚本表达式或负索引
$..book[0,1] | $..book[:2] 前两本书 使用数组切片或索引列表
$..book[?(@.isbn)] 有ISBN的所有书 使用过滤器表达式匹配有ISBN属性的书
$..book[?(@.price<10)] 价格小于10的所有书 使用过滤器表达式匹配价格
$..* 获取所有数据 使用通配符匹配所有元素

相关推荐

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-07-12 14:20:04       67 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-07-12 14:20:04       72 阅读
  3. 在Django里面运行非项目文件

    2024-07-12 14:20:04       58 阅读
  4. Python语言-面向对象

    2024-07-12 14:20:04       69 阅读

热门阅读

  1. 离线安装pip包

    2024-07-12 14:20:04       24 阅读
  2. 【MySQL】7.MySQL 的内置函数

    2024-07-12 14:20:04       21 阅读
  3. Spring 的核心注解

    2024-07-12 14:20:04       21 阅读
  4. 29. 一道简单背包题

    2024-07-12 14:20:04       22 阅读
  5. Tomcat

    2024-07-12 14:20:04       22 阅读
  6. C++语法提高B-hook机制

    2024-07-12 14:20:04       22 阅读
  7. 移动应用安全需求分析与安全保护工程

    2024-07-12 14:20:04       19 阅读
  8. Django 表单

    2024-07-12 14:20:04       22 阅读