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

如何从命令行向Node.js脚本传递JSON?JSON.parse解析报错问题求助

解决命令行传递JSON到Node.js脚本的解析错误

嗨,我来帮你搞定这个问题!你遇到的Unexpected token ' in JSON at position 1错误,核心原因是你传递的不是合法的JSON格式——JSON语法规范强制要求所有的键和字符串值必须用双引号(")包裹,而你用的是单引号('),这是JavaScript对象字面量的写法,但不符合JSON的标准,所以JSON.parse直接报错了。

下面一步步给你解决方法:

1. 修正命令行的JSON格式

首先要把传递的JSON改成合法格式,同时注意命令行的引号转义(不同终端的处理方式略有不同):

  • 在类Unix终端(bash/zsh等):直接用单引号包裹整个JSON字符串,内部用双引号
node index.js '{"foo":"ball"}'
  • 在Windows CMD:需要转义双引号
node index.js "{\"foo\":\"ball\"}"
  • 在Windows PowerShell:用单引号包裹即可
node index.js '{"foo":"ball"}'

2. 修改Node.js脚本,添加解析逻辑和错误处理

你现在的代码只是打印了参数,还没执行解析,建议加上try/catch来捕获解析错误,方便调试:

var args = process.argv;
var jsonStr = args[2];

console.log("Received JSON string:", jsonStr);
console.log("Type:", typeof jsonStr);

try {
  // 解析合法的JSON字符串
  var parsedData = JSON.parse(jsonStr);
  console.log("\nParsed result:", parsedData);
  console.log("Parsed type:", typeof parsedData);
} catch (error) {
  console.error("\nParse error:", error.message);
}

执行上面的命令后,你就能看到成功解析后的对象了。

3. 可选:避免命令行转义的替代方案

如果觉得命令行传递JSON的转义太麻烦,推荐把JSON内容放到单独的文件里,比如创建data.json:

{"foo":"ball"}

然后修改脚本读取文件内容:

const fs = require('fs');

try {
  // 读取文件并解析
  const jsonContent = fs.readFileSync('./data.json', 'utf8');
  const parsedData = JSON.parse(jsonContent);
  console.log("Parsed data:", parsedData);
} catch (error) {
  console.error("Error:", error.message);
}

执行时直接运行node index.js即可,不用传递任何参数,更省心。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.28 10:12:28