Ajouter un élément dans un json
Bonjour,
J'ai un problème de logique. J'ai un JSON qui est alimenté par une boucle:
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
| var json = {};
_.each(JSON.parse(res['rows']), function(row) {
if (!(row.id in catalog)) {
json[row.sid] = {
id: row.id,
name: row.name,
phones: []
};
}
json[row.id].phones.push({
mobile: "xxxxx",
home: "xxxxx",
work: "xxxxx"
});
});
console.dir(json); |
Je voudrai ajouter dans "phones" un item "hardwares" qui serait lui aussi un array avec une liste.
En gros le json final devrait donner:
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
| "1": {
"id": 1,
"name": "lola",
"phones": [{
"mobile": "xxx",
"home": "xxx",
"work": "xxx",
"hardwares": [{
"provider": "samsung",
"model": "galaxy S5"
}, {
"provider": "apple",
"model": "iphone 6"
}]
}]
} |
Mais je n'y arrive pas. Je n'ai pas eu de soucis pour "phones", mais je n'y arrive plus lorsqu’il faut ajouter imbriquer un array supplémentaire dans l'objet du même id.
J'ai essayé:
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
| var json = {};
_.each(JSON.parse(res['rows']), function(row) {
if (!(row.id in catalog)) {
json[row.sid] = {
id: row.id,
name: row.name,
phones: []
};
}
json[row.id].phones.push({
mobile: "xxxxx",
home: "xxxxx",
work: "xxxxx",
"hardwares": []
});
json[row.id].phones[0].hardwares.push({
provider: row.provider,
model: row.model,
});
});
console.dir(json); |
Mais ça ne marche pas. Il m'ajoute bien les x hardwares dans l'array, mais il me recrée un autre objet dans phones identique sauf que dans le second objet hardwares est vide.
Donc le premier objet phones est OK, mais le second ne devrait pas exister.
J'ai vraiment un problème de logique. Si vous avez une solution, je suis preneur.