10

私はNodeを初めて使用し、単純なJSONオブジェクトにアクセスするのに苦労しています。私のrequest.bodyには、次のようなJSONコンテンツが含まれます。

{
    "store_config": [
        {
            "name": "hello",
            "name2": "world"
        }
    ]
}

「store_config」値は常に存在しますが、その中のキーと値は何でもかまいません。

キーと値を繰り返し処理してそれぞれにアクセスするにはどうすればよいですか?また、それぞれを非同期的に処理したいと思います。

考えや方向性に感謝します。


アップデート

console.log(typeof(request.body));

戻り値:Object

parsedBody = JSON.parse(request.body);

戻り値:

SyntaxError: Unexpected token o
    at Object.parse (native)

更新2-さらなるデバッグ:

配列を反復処理しようとすると、値は1つだけです。

request.body.store_config.forEach(function(item, index) {
  console.log(index);
  console.log(request.body.store_config[index]);

});

戻り値:

0
{ name: 'hello', name2: 'world' }
4

3 に答える 3

17

がすでにJSONとして解析されている場合request.bodyは、JavaScriptオブジェクトとしてデータにアクセスできます。例えば、

request.body.store_config

それ以外の場合は、次のように解析する必要がありますJSON.parse

parsedBody = JSON.parse(request.body);

は配列なのでstore_config、次のように繰り返すことができます。

request.body.store_config.forEach(function(item, index) {
  // `item` is the next item in the array
  // `index` is the numeric position in the array, e.g. `array[index] == item`
});

配列内の各アイテムに対して非同期処理を実行する必要があり、いつ実行されるかを知る必要がある場合は、asyncなどの非同期ヘルパーライブラリを確認することをお勧めします。特に、次のasync.forEachような場合に役立ちます

async.forEach(request.body.store_config, function(item, callback) {
  someAsyncFunction(item, callback);
}, function(err){
  // if any of the async callbacks produced an error, err would equal that error
});

このスクリーンキャストasyncでは、ライブラリを使用した非同期処理について少し説明します。

于 2012-11-11T18:08:35.383 に答える
2

このようなもの:

config = JSON.parse(jsonString);
for(var i = 0; i < config.store_config.length; ++i) {
   for(key in config.store_config[i]) {
      yourAsyncFunction.call(this, key, config.store_config[i][key]);
   }
}
于 2012-11-11T18:07:13.553 に答える
-1

この刺し傷を実際のオブジェクトに変換するには、を使用しますJSON.parse。配列の場合と同じように、Javascriptオブジェクトを反復処理できます。

config = JSON.parse(string).store_config[0]
foreach (var key in config) {
    value = config[key]
}
于 2012-11-11T18:09:53.507 に答える