Node.js eval var json parse

时间:2012-11-12 13:11:35

标签: json bash node.js

我正在尝试创建一个小的解析器,它接收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,问题不太明确......

3 个答案:

答案 0 :(得分:5)

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

试试这个:

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

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

答案 1 :(得分:2)

添加到@ Esailija的答案:

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

会返回123。点符号需要属性名称。如果您有动态属性名称,则需要使用方括号表示法。

console.log(result['ads']);
// But what you want is:
console.log(result[path]); // 'path' is a variable with the correct string

答案 2 :(得分:0)

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

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