我是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' }
答案 0 :(得分:16)
如果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`
});
如果你需要对数组中的每个项进行异步处理,并且需要知道它何时完成,我建议你看一下异步助手库like async - 特别是{{3} }:
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
库async.forEach
may be useful for you进行异步处理。
答案 1 :(得分: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]);
}
}
答案 2 :(得分:-1)
要将此sting转换为实际对象,请使用JSON.parse
。您可以像使用数组一样遍历Javascript对象。
config = JSON.parse(string).store_config[0]
foreach (var key in config) {
value = config[key]
}