You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Node.js中使用jsonpath-finder提取JSON动态数组ID的方法

使用jsonpath-finder批量提取JSON中的动态ID

场景说明

需要基于npm包jsonpath-finder,从固定结构的JSON文件中提取所有动态生成的ID,最终输出ID组成的数组。该类JSON结构中动态ID均为顶层对象的键名,单文件内可包含n组ID对应的数据子数组。

示例文件(Sample.json)

[
    {
        "4787843417861749370": [
            {
                "type": "Fast delivery",
                "subtype": "verizon",
                "status": "Dispatched",
                "reason": "null",
                "currency_code": "USD"
            }
        ],
        "1502698381711920904": [
            {
                "type": "Normal delivery",
                "subtype": "Cisco fiber",
                "status": "Added Cart",
                "reason": "null",
                "currency_code": "USD"
            }
        ]
    }
]

期望输出

[4787843417861749370,1502698381711920904]

实现步骤

  • 安装依赖
    执行命令安装需要的npm包:
    npm install jsonpath-finder
    
  • 编写提取逻辑
    利用jsonpath的键名匹配语法,直接定位顶层对象的所有键名,不需要提前预知ID值,即可批量提取所有动态ID,参考代码如下:
    const jsonPath = require('jsonpath-finder');
    const fs = require('fs');
    
    // 读取本地目标JSON文件
    const fileContent = fs.readFileSync('./Sample.json', 'utf8');
    const data = JSON.parse(fileContent);
    
    // jsonpath规则说明:
    // $[0] 定位最外层数组的第一个对象
    // .* 匹配该对象下的所有属性
    // 末尾加~ 表示返回匹配属性的键名而非属性值
    const rawIds = jsonPath.query(data, '$[0].*~');
    
    // 注意:示例ID长度为19位,超过JS默认Number类型的最大安全整数范围,直接转Number会出现精度丢失
    // 业务需要数字类型就转BigInt,需要字符串类型直接用rawIds即可
    const idList = rawIds.map(id => BigInt(id));
    
    console.log(idList);
    
  • 适配说明
    该写法不限制顶层对象下的动态ID数量,不管包含多少组ID对应的数据子数组,都可以一次性提取全部ID,符合批量处理的需求。

提示:如果你的业务场景不需要做数值计算,建议直接保留提取到的字符串格式ID,避免跨语言、跨场景的类型兼容问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.31 00:39:17