Saurabh Sinha
Saurabh Sinha

Reputation: 1800

constructing a json format in javascript with existing json structure

I have a json structure in a variable say "data" which is like this

{
"SearchWithMasterDataDIdAndScandefinitionDAO": [
    {
        "dateDm_id": 20120602,
        "issueValue": "ELTDIWKZ",
        "scanName": "Company Stored as Person (Given Name)",
        "severityCode": 1,
        "severityName": "High",
        "totalDiscovered": 1
    },
    {
        "dateDm_id": 20120602,
        "issueValue": "LTDFPVOI",
        "scanName": "Company Stored as Person (Given Name)",
        "severityCode": 1,
        "severityName": "High",
        "totalDiscovered": 1
    },
    {
        "dateDm_id": 20121005,
        "issueValue": "LTDILWGY",
        "scanName": "Company Stored as Person (Given Name)",
        "severityCode": 1,
        "severityName": "High",
        "totalDiscovered": 1
    },
    {
        "dateDm_id": 20121005,
        "issueValue": "YMORCLTD",
        "scanName": "Company Stored as Person (Given Name)",
        "severityCode": 1,
        "severityName": "High",
        "totalDiscovered": 1
    }
]
}

Now i want to change this structure to something like this where datedm_id from each object becomes the root of new json structure with array as value New wanted structure :

{
"20120602": [
    {
        "issueValue": "ELTDIWKZ",
        "scanName": "Company Stored as Person (Given Name)",
        "severityCode": 1,
        "severityName": "High",
        "totalDiscovered": 1
    },
    {
        "issueValue": "LTDFPVOI",
        "scanName": "Company Stored as Person (Given Name)",
        "severityCode": 1,
        "severityName": "High",
        "totalDiscovered": 1
    }
],
"20121005": [
    {
        "issueValue": "YMORCLTD",
        "scanName": "Company Stored as Person (Given Name)",
        "severityCode": 1,
        "severityName": "High",
        "totalDiscovered": 1
    },
    {
        "issueValue": "COOPER",
        "scanName": "Company Stored as Person (Given Name)",
        "severityCode": 1,
        "severityName": "High",
        "totalDiscovered": 15
    }
]
}

please help me with this

Upvotes: 1

Views: 60

Answers (2)

Alon Gubkin
Alon Gubkin

Reputation: 57129

underscore.js is perfect for dealing with complex data structures:

var json = { ... };
var result = _.groupBy(json['SearchWithMasterDataDIdAndScandefinitionDAO'], 
    function (iterator) {
        var key = iterator['dateDm_id'];
        delete iterator['dateDm_id'];

        return key;
    });

console.log(result);

Upvotes: 0

jacquard
jacquard

Reputation: 1307

See the fiddle: http://jsfiddle.net/YVB2Y/

In summary you need to create an object inside the for loop.

var returnVar = {}
b.SearchWithMasterDataDIdAndScandefinitionDAO.forEach(function(item){
    var thisItem;
    if(returnVar[item.dateDm_id] == undefined){
        thisItem = [];
        returnVar[item.dateDm_id]  = thisItem;
    }
    else {
        thisItem = returnVar[item.dateDm_id];
    }

    var obj = {};

    obj.issueValue = item.issueValue;
    //and so on..

    thisItem.push(obj);

});

console.log(returnVar);

Upvotes: 1

Related Questions