You need to enable JavaScript to run this app. 如何在嵌套JSON中筛选http开头的字段值及object-scan实现
优惠活动
大模型
产品
解决方案
定价
更多

如何在嵌套JSON中筛选http开头的字段值及object-scan实现

基于object-scan实现嵌套JSON的http开头值筛选

完全可以通过object-scan完成这类嵌套JSON的全层级值筛选,不需要手动编写递归遍历的冗余逻辑。

核心实现逻辑

  • 自动跳过所有非字符串类型的节点(包括嵌套对象、数字、布尔值等)
  • 对所有字符串类型的值,判断其是否以http为起始字符
  • 不依赖固定的字段路径或嵌套层级深度,无论JSON结构嵌套多少层都可以正常遍历到所有目标节点

可直接运行的代码示例

首先通过npm安装依赖:
npm install object-scan

具体实现代码如下:

const objectScan = require('object-scan');

// 修正为合法结构的示例嵌套JSON(原示例多了冗余闭合大括号)
const nestedJson = {
  "a": "https://example1.com",
  "b": {
    "c": "https://example2.com",
    "d": {
      "e": "www.example3.com"
    }
  },
  "f": {
    "g": "https://example4.com"
  }
};

// 构造筛选规则
const getHttpStartedValues = objectScan(
  // 匹配JSON结构中全层级的所有节点,不限制路径深度
  ['**'],
  {
    // 自定义值匹配判断规则
    filterFn: ({ value }) => {
      // 仅保留满足两个条件的值:是字符串、且开头为http
      return typeof value === 'string' && value.startsWith('http');
    },
    // 配置返回内容为匹配到的节点值,而非字段路径
    rtn: 'value'
  }
);

// 执行筛选
const result = getHttpStartedValues(nestedJson);
console.log(result);

运行上述代码后,控制台输出的结果完全符合预期:
['https://example1.com', 'https://example2.com', 'https://example4.com']

常见注意事项

  • 示例中的www.example3.com因为不以http开头,会被自动过滤,不需要额外编写判断逻辑
  • 后续如果需要限定筛选的路径范围,只需要修改第一个参数的路径匹配规则即可,比如仅筛选b节点下的http值,就可以把匹配规则改成['b.**'],不需要改动核心的过滤判断逻辑
  • 相比手动编写递归遍历的实现,这种写法在嵌套结构调整时的维护成本更低。

内容的提问来源于stack exchange,提问作者RAMESHKUMAR

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.29 04:54:03