I have parsed JSON object representing response from old OData(v2) service:
"TimesheetDetailsSet": {
"results": [{
"TimesheetNumber": "1",
(...)
"results": [{
"__metadata":
So as you can see its a complex object with nested objects and arrays. I use SAP UI5 framework and I need to modify it, so there will be no intermediary arrays called "results". I want "TimesheetDetailsSet" and other entitysets containg "results" to be independent arrays of objects.
I wrote this method:
var fnConvert = function (oData) {
if (!oData) {
return oData;
}
for (var sKey in oData) {
if (oData.hasOwnProperty(sKey)) {
if (sKey == 'results') {
var oArr = oData[sKey].reduce(function (acc, cur, i) {
acc[i] = cur;
return acc;
}, []);
delete oData[sKey]
for (var i = 0; i < oArr.length; i++) {
oData[i] = oArr[i];
fnConvert(oData[i]);
}
} else if (typeof oData[sKey] === 'object') {
fnConvert(oData[sKey]);
}
}
}
return oData;
};
The only problem is that need entitysets to be arrays not objects.
UPDATE:
I got this:
"TimesheetDetailsSet": {
"results": [{
"__metadata": {
"id": "...",
"uri": "...",
"type": "ZHR_XSS_ASA_ESS_ODATA_SRV.TimesheetDetails"
},
"TimesheetNumber": "1",
"Username": "DEFAULT_USER",
"TimesheetKey": "\/Date(1529280000000)\/",
"TimesheetDetailKey": "00000001-0000-0000-0000-000000000000",
"CostObject": "0001",
"ConstructionSiteSet": {
"results": [{
"__metadata": {
"id": "...",
"uri": "...",
"type": "ZHR_XSS_ASA_ESS_ODATA_SRV.ConstructionSite"
},
"TimesheetKey": "\/Date(1529280000000)\/",
"WorkingOnConstrSiteSince": "18.08.2018",
"Username": "DEFAULT_USER",
"TimesheetDetailKey": "00000001-0000-0000-0000-000000000000",
"ConstructionSiteKey": "00000100-0000-0000-0000-000000000000",
"ConstructionSiteId": "0001",
"ConstructionSiteDetailSet": {
"results": [{
"__metadata": {
"id": "...",
"uri": "...",
"type": "ZHR_XSS_ASA_ESS_ODATA_SRV.ConstructionSiteDetail"
},
And I want to change it into this:
"TimesheetDetailsSet": [{
"__metadata": {
"id": "...",
"uri": "...",
"type": "ZHR_XSS_ASA_ESS_ODATA_SRV.TimesheetDetails"
},
"TimesheetNumber": "1",
"Username": "DEFAULT_USER",
"TimesheetKey": "\/Date(1529280000000)\/",
"TimesheetDetailKey": "00000001-0000-0000-0000-000000000000",
"CostObject": "0001",
"ConstructionSiteSet": [{
"__metadata": {
"id": "...",
"uri": "...",
"type": "ZHR_XSS_ASA_ESS_ODATA_SRV.ConstructionSite"
},
"TimesheetKey": "\/Date(1529280000000)\/",
"WorkingOnConstrSiteSince": "18.08.2018",
"Username": "DEFAULT_USER",
"TimesheetDetailKey": "00000001-0000-0000-0000-000000000000",
"ConstructionSiteKey": "00000100-0000-0000-0000-000000000000",
"ConstructionSiteId": "0001",
"ConstructionSiteDetailSet": [{
"__metadata": {
"id": "...",
"uri": "...",
"type": "ZHR_XSS_ASA_ESS_ODATA_SRV.ConstructionSiteDetail"
},