Bonjour,

J'ai un problème de logique. J'ai un JSON qui est alimenté par une boucle:

Code : Sélectionner tout - Visualiser dans une fenêtre à part
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 : Sélectionner tout - Visualiser dans une fenêtre à part
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 : Sélectionner tout - Visualiser dans une fenêtre à part
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.