Get Even More Visitors To Your Blog, Upgrade To A Business Listing >>

Node.js - Parse simple JSON object and access keys and values

Node.js - Parse simple JSON object and access keys and values

Problem

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' }
Problem courtesy of: Ben

Solution

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.

Solution courtesy of: Michelle Tilley

Discussion

View additional discussion.



This post first appeared on Node.js Recipes, please read the originial post: here

Share the post

Node.js - Parse simple JSON object and access keys and values

×

Subscribe to Node.js Recipes

Get updates delivered right to your inbox!

Thank you for your subscription

×