I am new to Node and struggling to access a simple JSON object. My request.body will have JSON content similar to the following:
{
"store_config": [
{
"name": "hello",
"name2": "world"
}
]
}
The "store_config" value will always be present, however the keys and values within could be anything.
How can I iterate through the keys and values to access each? I would also like to process each in an asynchronous manner.
Appreciate any thoughts or direction.
UPDATE
console.log(typeof(request.body));
Returns: Object
parsedBody = JSON.parse(request.body);
returns:
SyntaxError: Unexpected token o
at Object.parse (native)
UPDATE 2 - Further debug:
When I try to iterate through the array, there is only a single value:
request.body.store_config.forEach(function(item, index) {
console.log(index);
console.log(request.body.store_config[index]);
});
returns:
0
{ name: 'hello', name2: 'world' }
If request.body
is already being parsed as JSON, you can just access the data as a JavaScript object; for example,
request.body.store_config
Otherwise, you'll need to parse it with JSON.parse
:
parsedBody = JSON.parse(request.body);
Since store_config
is an array, you can iterate over it:
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`
});
If you need to do asynchronous processing on each item in the array, and need to know when it's done, I recommend you take a look at an async helper library like async--in particular, async.forEach
may be useful for you:
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
});
I talk a little bit about asynchronous processing with the async
library in this screencast.
Something like this:
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]);
}
}
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With