Jquery的:变换嵌套JSON对象到另一个JSON对象
问题描述:
在JavaScript的/ jquery的我如何实现以下Jquery的:变换嵌套JSON对象到另一个JSON对象
old_dataset = [
{
"dob": "xyz",
"name": {
"first": " abc",
"last": "lastname"
},
"start_date": {
"moth": "2",
"day": "5",
"year": 1
},
"children": [
{
"child": {
"id": "1",
"desc": "first child"
}
},
{
"child": {
"id": "2",
"desc": "second child"
}
}
]
},
{
"dob": "er",
"name": {
"first": " abc",
"last": "txt"
},
"start_date": {
"moth": "2",
"day": "5",
"year": 1
},
"children": [
{
"child": {
"id": "1",
"desc": "first child"
}
},
{
"child": {
"id": "2",
"desc": "second child"
}
}
]
}
]
超过上述使用jQuery迭代和更改为下列
new_dataset = [
{
"dob":"xyz",
"name": <first and last name values>
"start_date":<value of month day year>,
"children": [ {
child_id :1,
child_id : 2
},
]
},{
"dob":"er",
"name": <first and last name values>
"start_date":<value of month day year>,
"children": [ {
child_id :1,
child_id : 2
},
]
}]
如果有人可以给代码转换数据,它会帮助我理解迭代
答
你可以这样做:
function transformDataset(oldDataset) {
var newDataset = [];
var newObj;
for (var i = 0; i < oldDataset.length; i++) {
newObj = transformObj(oldDataset[i]);
newDataset.push(newObj);
}
return newDataset;
}
function transformObj(obj) {
var children = obj.children;
obj.name = obj.name.first + ' ' + obj.name.last;
obj.start_date = obj.start_date.month + ' ' + obj.start_date.day + ' ' + obj.start_date.year;
obj.children = [];
for (var i = 0; i < children.length; i++) {
obj.children.push(children[i].child.id);
}
return obj;
}
var new_dataset = transformDataset(old_dataset);
注意new_dataset将有子ID,而不是与多个child_id
属性的对象的数组。 您在old_dataset.start_date.month
(写作moth
)中也有错字(或者可能是故意的)。
'childrens'背后的原因是什么(应该是'children'我猜,至少这是正确的英语)是一个包含一个元素的数组?我建议阅读[MDN - 使用对象](https://developer.mozilla.org/en-US/docs/JavaScript/Guide/Working_with_Objects)来学习如何创建和修改对象。 – 2013-02-22 12:02:24
只是一个fyi,你的json语法有一些错误。您可以使用jsonlint.com为您进行验证并进行更正。我已经做到了,正确的是http://pastebin.com/VArTyMKx – Arindam 2013-02-22 12:15:30
任何答案请 – tada 2013-02-22 14:22:42