Reputation: 1800
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
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
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