- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
03-10-2025 12:23 PM - edited 03-10-2025 04:06 PM
Hi All,
Kindly help to deal below situation.
now kindly help me how to deal below format if there is nested values and push into Object {}
var j={
info:{
data: [
{
rollNumber:"98087",
name:"ABC",
section:"A"
}, {
rollNumber:"98097",
name:"ABCD",
section:"B"
}
]
}
}
Script:
system Property : List of student fields
values: rollNumber,name, section,
var gr = gs.getProperty("list of student fields").split(',');
var parse = JSON.parse(j);
var result = parse.info.data;
var obj={};
var final=[];
for(var i in gr){
if(gr[i] in result){
obj[gr[i]] = result[gr[i]].toString();
}
}
final.push(obj);
Solved! Go to Solution.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
03-10-2025 04:46 PM - edited 03-10-2025 04:47 PM
Can't reproduce, check your input data maybe. I've used your data as you've described and it works fine (eg: run this in a BG script):
var fields = "rollNumber, name, section".split(/,\s*/);
var j = { info:{ data: [ { rollNumber:"98087", name:"ABC", section:"A" }, { rollNumber:"98097", name:"ABCD", section:"B" } ] } };
var data = j.info.data;
var res = [];
data.forEach(function(obj) {
var resObj = {};
fields.forEach(function(field) {
if (field in obj)
resObj[field] = obj[field];
});
res.push(resObj);
});
gs.info(JSON.stringify(res, null, 2));
/* Output:
[
{
"rollNumber": "98087",
"name": "ABC",
"section": "A"
},
{
"rollNumber": "98097",
"name": "ABCD",
"section": "B"
}
]
*/
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
03-10-2025 04:26 PM - edited 03-10-2025 04:31 PM
var fields = gs.getProperty("list of student fields").split(/,\s*/);
var parse = JSON.parse(j);
var data = parse.info.data;
var res = [];
data.forEach(function(obj) {
var resObj = {};
fields.forEach(function(field) {
if (field in obj)
resObj[field] = obj[field];
});
res.push(resObj);
});
// use `res`
If you're running JavaScript mode ES2021+:
const fields = gs.getProperty("list of student fields").split(/,\s*/);
const parse = JSON.parse(j);
const data = parse.info.data;
const res = data.map(obj => Object.fromEntries(
fields.filter(field => field in obj).map(field => [field, obj[field]])
));
// use `res`
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
03-10-2025 04:37 PM - edited 03-10-2025 04:40 PM
var fields = gs.getProperty("list of student fields").split(','); var parse = JSON.parse(j); var data = parse.info.data; var res = []; data.forEach(function(obj) { var resObj = {}; fields.forEach(function(field) { if (field in obj) resObj[field] = obj[field]; }); res.push(resObj); });
I tried your script below output coming
same values pushing into 2nd set
[{"rollNumber":98087,"name":"ABC","section":"A"},{"rollNumber":98087,"name":"ABC","section":"A"}]
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
03-10-2025 04:46 PM - edited 03-10-2025 04:47 PM
Can't reproduce, check your input data maybe. I've used your data as you've described and it works fine (eg: run this in a BG script):
var fields = "rollNumber, name, section".split(/,\s*/);
var j = { info:{ data: [ { rollNumber:"98087", name:"ABC", section:"A" }, { rollNumber:"98097", name:"ABCD", section:"B" } ] } };
var data = j.info.data;
var res = [];
data.forEach(function(obj) {
var resObj = {};
fields.forEach(function(field) {
if (field in obj)
resObj[field] = obj[field];
});
res.push(resObj);
});
gs.info(JSON.stringify(res, null, 2));
/* Output:
[
{
"rollNumber": "98087",
"name": "ABC",
"section": "A"
},
{
"rollNumber": "98097",
"name": "ABCD",
"section": "B"
}
]
*/
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
03-10-2025 04:52 PM
let me try this one please.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
03-10-2025 04:51 PM
I tried below one also
var aa = JSON.stringify(j);
var grr = JSON.parse(aa);
var tt=grr.info.data;
var grobj={};
for(var j=0;j<tt.length;j++){
for(var key in pr){
if(pr[key] in tt[j]){
grObj[pr[key]]=tt[j][pr[key]];
}
}
arr.push(grObj);
gs.info(JSON.stringify(arr));
this method also giving same result.