0

我正在尝试制作一个小型解析器,它接收 json 字符串和获取路径:

var args = process.argv;
var jsonToBeParsed = args[2];
var path = args[3];

var result = JSON.parse(jsonToBeParsed);

console.log(result);
console.log(result.path);

我打电话给这个

node parser.js '{"asd":"123", "qwe":"312"}' 'asd'

它给了我undefined

我认为必须使用一些 eval 函数来完成,但我对 node/JS 没有太多经验。我该如何解决这个问题?,我需要从命令行获取结果。

编辑:我期待第二个日志中出现“123”。谢谢@Esailija,这个问题不太清楚......

4

3 回答 3

5

我认为您正在尝试使用动态属性,您不能使用.path,因为这字面意思是.path属性。

尝试这个:

console.log(result);
console.log(result[path]);

如果path === "asd",那么它将起作用,这在静态上等效于result["asd"]orresult.asd

于 2012-11-12T13:22:01.010 回答
2

To add to @Esailija's answer:

node parser.js '{"path": "123"}' 'asd'

Would return 123. The dot notation expects the property name. If you have a dynamic property name, you need to use the square brackets notation.

console.log(result['ads']);
// But what you want is:
console.log(result[path]); // 'path' is a variable with the correct string
于 2012-11-12T13:25:21.197 回答
0

我想将 json 解析器嵌入到 git 别名中,在 bash 中获取 json 节点(使用节点)

node -e "console.log(JSON.parse(process.argv[1]).foo.bar)" '{"foo":{"bar":"Hello World"}}'

于 2014-02-12T22:54:51.120 回答