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

NodeJS请求NPM registry如何读取带引号动态键名的JSON值

解决方案

NPM Registry返回的versions是标准键值对对象,版本号作为字符串类型的键是JSON序列化的正常表现,不存在解析障碍,动态键场景按以下方式读取即可:

  • 读取全量版本信息
    直接用Object.keys()/Object.values()/Object.entries()遍历对象,不需要提前预知具体版本号:
import fetch from "node-fetch";

const url = "https://registry.npmjs.com/[package-name]";
const settings = { method: "GET" };

fetch(url, settings)
  .then(res => res.json())
  .then((json) => {
    const versions = json.versions;
    // 获取所有版本号数组 例:['1.0.0', '1.1.0', '2.0.0']
    const allVersionNumbers = Object.keys(versions);
    console.log('所有已发布版本:', allVersionNumbers);

    // 遍历读取每个版本的详情
    Object.entries(versions).forEach(([versionNum, versionDetail]) => {
      console.log(`版本${versionNum}详情:`, versionDetail);
    })
  });
  • 读取最新版本信息
    不需要手动比对版本号,接口返回的dist-tags.latest字段直接给出当前最新稳定版的版本号,通过方括号语法动态取值即可:
fetch(url, settings)
  .then(res => res.json())
  .then((json) => {
    const latestVerNum = json['dist-tags'].latest;
    // 动态键统一用方括号读取,不要用点语法
    const latestVerDetail = json.versions[latestVerNum];
    console.log('最新版本详情:', latestVerDetail);
  });
  • 读取指定版本信息
    直接将目标版本号作为字符串传入方括号读取即可,例如读取1.0.0版本:json.versions['1.0.0']

注意:含特殊字符(点、横杠等)的键、动态生成的键禁止用点语法读取,比如json.versions.2.0.0属于非法语法,这类场景必须使用方括号语法传字符串键取值。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.30 21:39:16