首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >将JSON作为命令行参数传递给Node

将JSON作为命令行参数传递给Node
EN

Stack Overflow用户
提问于 2015-10-01 06:37:45
回答 3查看 13.7K关注 0票数 10

我想将一个JSON对象作为命令行参数传递给node。如下所示:

node file.js --data { "name": "Dave" }

做这件事最好的方法是什么,或者有没有其他更可取的方法来完成同样的事情?

EN

回答 3

Stack Overflow用户

发布于 2015-10-01 06:45:55

如果数据量很小,我会使用https://www.npmjs.com/package/minimist,这是一个用于nodejs的命令行参数解析器。它不是json,但您可以简单地传递如下选项

代码语言:javascript
复制
--name=Foo 

代码语言:javascript
复制
-n Foo

我认为这比json更适合作为命令行工具。

如果要使用大量数据,最好创建一个json文件,并且只将文件名作为命令行参数传递,这样程序就可以加载和解析它。

作为命令行参数的大对象,很可能不是一个好主意。

票数 5
EN

Stack Overflow用户

发布于 2017-06-28 05:54:02

这对我来说很有效:

代码语言:javascript
复制
$ node foo.js --json-array='["zoom"]'

然后在我的代码中,我有:

代码语言:javascript
复制
  import * as _ from 'lodash';

  const parsed = JSON.parse(cliOpts.json_array || []);

  _.flattenDeep([parsed]).forEach(item => console.log(item));

我使用dashdash,我认为这是命令行解析的最佳选择。

要对对象执行相同的操作,只需使用:

代码语言:javascript
复制
$ node foo.js --json-object='{"bar": true}'
票数 2
EN

Stack Overflow用户

发布于 2018-07-10 18:19:01

这可能有点夸大其词,也不适合您正在做的事情,因为它会使JSON不可读,但我找到了一种健壮的方法(就像“在任何OS上工作”一样),那就是使用base64编码。

我想通过JSON在程序的各个部分之间传递许多选项(主节点例程调用一组小的从节点例程)。我的JSON相当大,有像引号和反斜杠这样令人讨厌的字符,所以要清理它听起来很痛苦(特别是在多操作系统环境中)。

最后,我的代码(TypeScript)如下所示:

在调用程序中:

代码语言:javascript
复制
const buffer: Buffer = new Buffer(JSON.stringify(myJson));
const command: string = 'node slave.js --json "' + buffer.toString('base64') + '" --b64';
const slicing: child_process.ChildProcess = child_process.exec(command, ...)

在接收程序中:

代码语言:javascript
复制
let inputJson: string;
if (commander.json) {
  inputJson = commander.json;
  if (commander.b64) {
    inputJson = new Buffer(inputJson, 'base64').toString('ascii');
  }
}

( --b64标志允许我在手动输入普通JSON或使用base64版本之间进行选择,我使用commander只是为了方便)

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32876669

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档