IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

JavaScript Discussion :

Ajouter un élément dans un json


Sujet :

JavaScript

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Profil pro
    Expert technique
    Inscrit en
    Septembre 2003
    Messages
    328
    Détails du profil
    Informations personnelles :
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Expert technique

    Informations forums :
    Inscription : Septembre 2003
    Messages : 328
    Par défaut 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 : 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.

  2. #2
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 659
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 75
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 659
    Billets dans le blog
    1
    Ma page Developpez - Mon Blog Developpez
    Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
    Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
    Votre post est résolu ? Alors n'oubliez pas le Tag

    Venez sur le Chat de Développez !

  3. #3
    Membre éclairé
    Profil pro
    Expert technique
    Inscrit en
    Septembre 2003
    Messages
    328
    Détails du profil
    Informations personnelles :
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Expert technique

    Informations forums :
    Inscription : Septembre 2003
    Messages : 328
    Par défaut
    oui j'en suis arrivé au même résultat. Mais si on regarde le résultat, on voit bien que
    json["1"].phones[0].hardwares a 3 objets. Les 2 initiaux + celui ajouté.

    Mais on voit aussi un qu'il existe un json["1"].phones[1] qui lui n'a rien dans hardwares. Cet élément ne devrait pas exister.
    Je me casse la tête à cause de ça.

  4. #4
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 659
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 75
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 659
    Billets dans le blog
    1
    Par défaut
    Ben non c'est dasn les propriété internes du json niveau proto ...
    le contenu c'est juste le début ...
    Ma page Developpez - Mon Blog Developpez
    Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
    Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
    Votre post est résolu ? Alors n'oubliez pas le Tag

    Venez sur le Chat de Développez !

  5. #5
    Membre éclairé
    Profil pro
    Expert technique
    Inscrit en
    Septembre 2003
    Messages
    328
    Détails du profil
    Informations personnelles :
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Expert technique

    Informations forums :
    Inscription : Septembre 2003
    Messages : 328
    Par défaut
    euh, je suis désolé, je n'ai pas compris la réponse ?
    Nom : screen.png
Affichages : 3145
Taille : 11,3 Ko

    Ce json en sortie est envoyé à une autre moulinette qui traite le json pour construire une liste plus complète
    qui croise d'autres json. Et ce deuxième objet est traité comme n'importe quel autre élément puisqu'il fait parti
    du json.

  6. #6
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 659
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 75
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 659
    Billets dans le blog
    1
    Par défaut
    C'est juste l'affichage de console qui te montre au debut le contneu et en dessous les propriété prototypes !

    https://jsfiddle.net/sn6yj99z/1/

    là il ne loggue bein que le premier element avec un seul array hardwares !
    Ma page Developpez - Mon Blog Developpez
    Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
    Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
    Votre post est résolu ? Alors n'oubliez pas le Tag

    Venez sur le Chat de Développez !

Discussions similaires

  1. Correction pour ajouté un élément dans une liste
    Par Rifton007 dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 27/01/2007, 11h09
  2. [Tableaux] ajout d'éléments dans un tableau
    Par maysa dans le forum Langage
    Réponses: 7
    Dernier message: 06/11/2006, 10h09
  3. ajouter un élément dans une liste
    Par Le Mérovingien dans le forum Général JavaScript
    Réponses: 22
    Dernier message: 02/07/2006, 17h43
  4. Ajout nouveaux éléments dans liste de choix
    Par Crazyblinkgirl dans le forum Général JavaScript
    Réponses: 6
    Dernier message: 23/06/2006, 15h17
  5. [Tableaux] ajout d'élément dans un tableau
    Par maximenet dans le forum Langage
    Réponses: 3
    Dernier message: 28/02/2006, 20h24

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo