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の経験はあまりありません。これを解決するにはどうすればよいですか?コマンドラインから結果を取得する必要があります。

編集:2番目のログに「123」が表示されることを期待しています。@Esailijaに感謝します、質問はあまり明確ではありませんでした...

4

3 に答える 3

5

動的プロパティを使おうとしていると思いますが.path、それは文字通り.pathプロパティを意味するため、使用できません。

これを試して:

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

の場合path === "asd"、それは機能します。これは静的にresult["asd"]またはと同等です。result.asd

于 2012-11-12T13:22:01.010 に答える
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
于 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 に答える