2013-02-22 2 views
0

В 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 
     }, 
    ] 
}] 

Если кто-то может передать код для преобразования данных, это поможет мне понять итерацию

+0

В чем причина 'childrens' (который должен быть« детьми », я думаю, по крайней мере, это был бы правильный английский), являясь массивом с одним элементом? Я рекомендую прочитать [MDN - Работа с объектами] (https://developer.mozilla.org/en-US/docs/JavaScript/Guide/Working_with_Objects), чтобы узнать, как создавать и изменять объекты. –

+0

Просто fyi, ваш синтаксис json имеет некоторые ошибки. вы можете использовать jsonlint.com для проверки и исправления для вас. Я сделал это, и правильным является http://pastebin.com/VArTyMKx – Arindam

+0

любые ответы, пожалуйста – tada

ответ

0

Вы могли бы сделать что-то вроде:

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) (или, может быть, это было намеренно).

Смежные вопросы