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 - 进一步调试:

当我尝试遍历数组时,只有一个值:

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

如果request.body已经被解析为 JSON,您可以将数据作为 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 ——特别是,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 回答