2013-02-22 7 views
0

javascript/jquery Comment obtenir une suiteJquery: transformer objet JSON imbriqué à un autre objet 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" 
      } 
     } 
    ] 
} 

]

En utilisant itérer jquery sur ce qui précède et changer à suivre

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

Si quelqu'un peut donner le code pour transformer les données, cela m'aiderait à comprendre l'itération

+0

Quel est le raisonnement derrière 'childrens' (qui devrait être' children' je suppose, au moins ce serait un anglais correct) étant un tableau avec un élément? Je recommande de lire [MDN - Working with Objects] (https://developer.mozilla.org/fr-fr/docs/JavaScript/Guide/Working_with_Objects) pour apprendre comment créer et modifier des objets. –

+0

Juste un fyi, votre syntaxe json a quelques erreurs. vous pouvez utiliser jsonlint.com pour le valider et le corriger pour vous. Je l'ai fait et la bonne est http://pastebin.com/VArTyMKx – Arindam

+0

des réponses s'il vous plaît – tada

Répondre

0

Vous pouvez faire quelque chose comme:

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); 

Notez que new_dataset aura un tableau de id enfant au lieu d'un objet avec plusieurs propriétés child_id. Vous avez également eu une faute de frappe dans old_dataset.start_date.month (a été écrit moth) (ou peut-être que c'était intentionnel).