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 :

Recherche valeur id dans json


Sujet :

JavaScript

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Octobre 2003
    Messages
    37
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Services à domicile

    Informations forums :
    Inscription : Octobre 2003
    Messages : 37
    Par défaut Recherche valeur id dans json
    Bonjour à tous, je sollicite de l'aide, je sèche sur un problème.

    Je construit un fichier JSON avec cheerio :
    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
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    [
        {
            "id": 1,
            "nameReceipt": "Gougères faciles",
            "notation": " 5",
            "duration": "45 min",
            "receipt_url": "http://www.marmiton.org/recettes/recette_gougeres-faciles_13241.aspx",
            "receipt_budget": "bon marché",
            "receipt_quantity_title": "personnes",
            "receipt_quantity": "4",
            "receipt_time_prep": "20 min",
            "receipt_time_baking": "25 min",
            "receipt_ingredient": "1 pincée de sel 75 g de gruyère râpé 75 g de beurre 150 g de farine 25 cl d'eau 4 oeuf ",
            "receipt_preparation": [
                "",
                "Etape 1Prévoir une casserole, une spatule, une plaque beurrée et préchauffer le four à 210°C (thermostat 7).",
                "Etape 2Faire une pâte à choux en faisant fondre dans une casserole le beurre, l'eau, le sel. Porter à ébullition. ",
                "Etape 3Retirer du feu et ajouter la farine d'un seul coup en travaillant vivement à la spatule. Remettre sur le feu et dessécher la pâte jusqu'à ce qu'elle se détache de la casserole.",
                "Etape 4Retirer du feu, laissez tiédir. ",
                "Etape 5Incorporer les 4 oeufs, un à un, en mélangeant bien à la spatule.",
                "Etape 6Ajouter le gruyère râpé.",
                "Etape 7Disposer en petites boules sur une plaque beurrée.",
                "Etape 8Cuire jusqu'à ce que ça ait gonflé et que ce soit un peu doré (environ 25 min)."
            ]
        },
        {
            "id": 2,
            "nameReceipt": "Gougères simple et rapide",
            "notation": " 4",
            "duration": "35 min",
            "receipt_url": "http://www.marmiton.org/recettes/recette_gougeres-simple-et-rapide_313709.aspx",
            "receipt_budget": "bon marché",
            "receipt_quantity_title": "Gougères",
            "receipt_quantity": "50",
            "receipt_time_prep": "10 min",
            "receipt_time_baking": "25 min",
            "receipt_ingredient": "25 cl d'eau 120 g de beurre 4 oeuf 140 g de farine 100 g de gruyère râpé 1/2 cuillère à café de sel ",
            "receipt_preparation": [
                "",
                "Etape 1Réunissez l'eau, le beurre et le sel dans une casserole et porter à ébullition. ",
                "Etape 2Quand le beurre est complètement fondu, retirez du feu et ajoutez la farine en pluie en remuant vivement.",
                "Etape 3Remettez 1 à 2 min à feu doux sans cesser de remuer jusqu'à ce que la pâte forme une masse lisse et sèche qui se décolle des parois.",
                "Etape 4Retirez du feu puis incorporez les oeufs 1 à 1 en attendant que chacun soit bien absorbé avant d'en rajouter 1 autre. ",
                "Etape 5Ajouter le fromage.",
                "Etape 6Préchauffer le four à 180°C (thermostat 6). Recouvrez une plaque de papier sulfurisé. Utilisez 2 cuillères ou une poche à douille et déposer des petite boules de pâtes suffisamment espacées.",
                "Etape 7Enfourner jusqu’à ce que les choux soient bien dorés soit 20/25 min."
            ]
        }
     
    ]
    Le but étant de rechercher dans le json l'id correspondant a une variable.

    Ma fonction js :

    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
     var fs = require('fs');
        var fileJSON = __dirname + '/marmiton.json';
        fs.readFile(fileJSON, 'utf8', function (err, json) {
            if (err) {
                return console.log(err);
            }
    // recherche de l'id selon val i
            var i = 2 ;
            jsonObj = JSON.parse(json);
     
            if (i == id) {
            id      = jsonObj[i].id;
            name = jsonObj[i].nameReceipt;
            quantity_title = jsonObj[i].receipt_quantity_title;
            quantity = jsonObj[i].receipt_quantity;
     
          }
           console.log( "Recette id : " + id + " " + name + " pour " + quantity + " " + quantity_title );
        });
    }
    Le problème étant que cette solution ne correspond pas à mon souhait.
    dans ce cas précis : si i = 1, il me sort la recette 2, si i = 2 il me sort la recette 3.

    Merci d'avance pour votre aide.

  2. #2
    Membre extrêmement actif Avatar de psychadelic
    Profil pro
    Inscrit en
    Mai 2010
    Messages
    2 532
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2010
    Messages : 2 532
    Par défaut
    En JavaScript, comme dans tous les langages, les tableau commencent à la position Zéro...

  3. #3
    Membre averti
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Octobre 2003
    Messages
    37
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Services à domicile

    Informations forums :
    Inscription : Octobre 2003
    Messages : 37
    Par défaut
    Vous avez raison, mais lors de la création de mon json, je force l'id à commencer par 1, pour la simple raison, c'est que cet ID correspond à un paramètre variable entre 1 et 10.
    Pour régler mon problème, j'ai fait ceci et cela fonctionne, même si ce n'est pas très propre.

    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
    function readReceiptforJson(i) {
     
        var fs = require('fs');
        var fileJSON = __dirname + '/marmiton.json';
        fs.readFile(fileJSON, 'utf8', function (err, json) {
            if (err) {
                return console.log(err);
            }
     
           //  recherche de l'id selon val i
            i = i - 1;
            jsonObj = JSON.parse(json);
     
                id = jsonObj[i].id;
                name = jsonObj[i].nameReceipt;
                quantity_title = jsonObj[i].receipt_quantity_title;
                quantity = jsonObj[i].receipt_quantity;
     
           console.log( "Recette id : " + id + " " + name + " pour " + quantity + " " + quantity_title );
        });
    }

  4. #4
    Membre extrêmement actif Avatar de psychadelic
    Profil pro
    Inscrit en
    Mai 2010
    Messages
    2 532
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2010
    Messages : 2 532
    Par défaut
    Que tu l'appelle ID ou n'importe quoi d'autre, cela reste une donnée dans ton tableau et non la valeur d'index du tableau.

    si tu veux à tout prix que le premier élément de ton tableau ait pour index une valeur à 1, une solution c'est de le déclarer ainsi :

    Code JavaScript : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    var Tab_1_4 = Array();
     
    Tab_1_4[1] = { "id": 1, "nameReceipt": "Gougères faciles" };
    Tab_1_4[2] = { "id": 2, "nameReceipt": "Gougères simple et rapide" };
    Tab_1_4[3] = { "id": 3, "nameReceipt": "Gougères truc" };
    Tab_1_4[4] = { "id": 4, "nameReceipt": "Gougères bidule" };
     
    console.log(Tab_1_4.length);  // ==> renvoi 5 car il que la position 0 existe
    console.log(Tab_1_4[0]);         // ==> renvoi undefined

    ou de faire ton json ainsi :
    Code json : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    [ { "id": 0 } ],
    [
        {
            "id": 1,
            "nameReceipt": "Gougères faciles", .....


    Mais je t'invite à lire ce post, car en JavaScript tout est objet, même les tableaux, qu'ils contiennent ou non des objets.

    Est-ce qu'un array DOIT commencer avec un index de 0 => https://www.developpez.net/forums/d1...cer-index-0-a/

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [AC-2010] Recherche valeur Max dans un état
    Par draft61 dans le forum IHM
    Réponses: 2
    Dernier message: 11/05/2011, 14h05
  2. [XL-2007] Recherche valeur cellule dans plusieurs classeurs fermés
    Par Millenniums dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 19/04/2011, 20h32
  3. recherche valeur max dans un tableau
    Par www.rubis dans le forum Langage
    Réponses: 4
    Dernier message: 31/01/2011, 17h43
  4. Recherche Valeur -> écrire dans une colonne de cette ligne
    Par Xiombarg2911 dans le forum Macros et VBA Excel
    Réponses: 7
    Dernier message: 25/04/2008, 14h12
  5. [DAO]type non défini / recherche valeur max dans un champ
    Par petitours dans le forum Requêtes et SQL.
    Réponses: 5
    Dernier message: 23/04/2007, 09h59

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