跳到主要内容

Json path解析

1.了解 JSON 结构

在开始学习 JSON Path 之前,首先要了解 JSON 的结构。JSON 是一种轻量级的数据交换格式,常用于表示结构化的数据。其数据结构由一组键值对(key-value pairs)组成,可以包含对象(object)、数组(array)、字符串(string)、数字(number)、布尔值(boolean)和 null 值。

以下是一个 JSON 示例:

{
"name": "John",
"age": 30,
"email": "john@example.com",
"address": {
"street": "123 Main St",
"city": "New York",
"country": "USA"
},
"hobbies": ["reading", "music", "traveling"]
}

2.基本路径表达式

JSON Path 使用简洁的路径表达式来查询和提取 JSON 数据。下面是一些基本的路径表达式:

  • $:根节点
  • .:当前节点
  • ..:递归地搜索子节点
  • []:按索引或属性过滤数组或对象

例如,使用 $ 进行路径表达式查询,将返回整个 JSON 对象:

$ // 返回整个 JSON 对象

使用 .key 来访问某个键的值:

$.name // 返回 "John"

使用 .[index] 来访问数组值:

$.hobbies[0] // 返回 "reading"

3.进阶路径表达式

JSON Path 还提供了更复杂的路径表达式来进行常见的查找操作。

例如,使用 * 来匹配所有子节点:

$.address.*
// 返回所有地址的值,即 {"street": "123 Main St", "city": "New York", "country": "USA"}

使用 [] 来根据条件过滤数组:

$.hobbies[?(@ == 'music')] // 返回 ["music"],匹配值为 "music" 的元素

使用 . 来组合路径表达式:

$.address.city // 返回 "New York"

4.高级路径表达式

除了基本和进阶路径表达式外,JSON Path 还支持更复杂的操作,例如使用比较运算符、逻辑运算符以及函数调用来进行过滤和操作。

使用比较运算符:

$.age > 25 // 返回 true,如果年龄大于 25

使用逻辑运算符:

$[?(@.age > 25 && @.name == 'John')] // 返回满足年龄大于 25 并且名字为 "John" 的对象

使用函数调用:

$.hobbies[?(@.length() > 5)] // 返回长度大于 5 的元素

测试用的解析工具:http://www.atoolbox.net/Tool.php?Id=792

tips:

对于key1.key2如何解析

$.["key1.key2"]或者$.['key1.key2']