Skip to content

json_搜索

函数名:json_搜索 / json_Search

功能描述

在 JSON 数据中搜索指定内容(支持 JSON 文本或文件路径),返回所有匹配的值及其对应的 JSON 路径,支持模糊查询与精确匹配。

会员等级:🟢 免费版(Free)

语法

excel
=json_搜索(JSON文本/文件路径, 查找值, 模糊查询)

参数

参数名类型必填默认值说明
JSON文本/文件路径String-JSON 字符串,或 JSON 文件的完整路径。仅当输入为合法路径(含路径分隔符且长度不超过 260)且文件存在时按文件读取
查找值String-要查找的值
模糊查询BooleanTRUETRUE 为模糊匹配(包含即命中),FALSE 为精确匹配(完全相等)

返回值

Object[,] - N×2 二维数组,第 1 列为匹配值,第 2 列为其 JSON 路径(如 user.nameitems[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)文件读取失败:
无匹配项未找到匹配项
其他异常处理失败:

基于源代码最新版本文档