json_搜索
函数名:json_搜索 / json_Search
功能描述
在 JSON 数据中搜索指定内容(支持 JSON 文本或文件路径),返回所有匹配的值及其对应的 JSON 路径,支持模糊查询与精确匹配。
会员等级:🟢 免费版(Free)
语法
excel
=json_搜索(JSON文本/文件路径, 查找值, 模糊查询)参数
| 参数名 | 类型 | 必填 | 默认值 | 说明 |
|---|---|---|---|---|
| JSON文本/文件路径 | String | 是 | - | JSON 字符串,或 JSON 文件的完整路径。仅当输入为合法路径(含路径分隔符且长度不超过 260)且文件存在时按文件读取 |
| 查找值 | String | 是 | - | 要查找的值 |
| 模糊查询 | Boolean | 否 | TRUE | TRUE 为模糊匹配(包含即命中),FALSE 为精确匹配(完全相等) |
返回值
Object[,] - N×2 二维数组,第 1 列为匹配值,第 2 列为其 JSON 路径(如 user.name、items[0].id)。无匹配时返回单单元格"未找到匹配项"。
使用示例
模糊搜索
公式:
excel
=json_搜索("{""user"":{""name"":""张三"",""city"":""北京""}}", "张", TRUE)结果:
张三 | user.name精确匹配
公式:
excel
=json_搜索("{""user"":{""name"":""张三"",""city"":""北京""}}", "北京", FALSE)结果:
北京 | user.city未找到结果
公式:
excel
=json_搜索("{""user"":{""name"":""张三""}}", "李四", TRUE)结果:
未找到匹配项技术说明
- 当输入为合法文件路径且文件存在时,使用
File.ReadAllText以 UTF-8 编码(自动处理 BOM)读取。 - 使用
JToken.Parse解析 JSON,递归遍历所有节点(对象属性、数组元素、叶节点值)。 - 模糊匹配使用
IndexOf(StringComparison.OrdinalIgnoreCase)(不区分大小写、包含即命中);精确匹配使用Equals(StringComparison.OrdinalIgnoreCase)。 - 对象路径以点号连接(
a.b),数组路径以中括号索引表示(a[0])。
错误处理
| 错误场景 | 返回值 |
|---|---|
| 无效的 JSON 格式(JsonException) | 无效的JSON格式(或文件内容非JSON) |
| 文件读取失败(IOException) | 文件读取失败: |
| 无匹配项 | 未找到匹配项 |
| 其他异常 | 处理失败: |