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