JSON

La syntaxe de JSON, JSON.parse et JSON.stringify, la différence avec un objet JavaScript et le chemin d'accès à une valeur imbriquée.

  • 24 cartes
  • 3 thèmes
  • Gratuit

Le programme, thème par thème

Le poids de chaque thème suit celui que lui donne l'examen.

  1. Notions
  2. Questions
  3. Ranger et relier

Quelques cartes du deck

  • JSON : de quoi s'agit-il ?

    Voir la réponse

    Format texte d'échange de données, né de la notation des objets JavaScript, fait d'objets, de tableaux, de chaînes, de nombres, de booléens et de null.

    Il est lisible par tous les langages, pas seulement JavaScript : c'est pourquoi les API web l'utilisent. Il ne connaît ni les dates, ni les fonctions, ni undefined.

  • Quelle chaîne produit ce programme ?

    ```javascript
    JSON.stringify({ a: 1, b: undefined, c: [1, undefined], d: () => 1 })
    `

    • {"a":1,"c":[1,null]}
    • {"a":1,"b":null,"c":[1,null]}
    • {"a":1,"c":[1]}
    • {"a":1,"c":[1,null],"d":null}
    Voir la réponse

    {"a":1,"c":[1,null]}

    Dans un objet, les propriétés undefined ou fonctions sont omises (b et d disparaissent). Dans un tableau, elles gardent leur place et deviennent null.

  • Un document JSON valide s'écrit avec des guillemets … ; il n'accepte ni … ni commentaire.

    Voir la réponse

    Un document JSON valide s'écrit avec des guillemets doubles ; il n'accepte ni virgule finale ni commentaire.

    Les guillemets simples et les noms sans guillemets passent dans un littéral JavaScript, pas dans JSON. Dans un objet, une virgule finale produit Expected double-quoted property name.

  • Syntaxe stricte de JSON : de quoi s'agit-il ?

    Voir la réponse

    Règles de JSON : les noms de propriété et les chaînes s'écrivent entre guillemets doubles, sans virgule après le dernier élément et sans commentaire.

    { a: 1 }, {'a': 1} et {"a": 1,} sont des littéraux JavaScript valides, mais JSON.parse les refuse : pour le troisième, il lève Expected double-quoted property name in JSON.

  • Que renvoie JSON.stringify({ n: NaN }) ?

    • {"n":NaN}
    • {"n":null}
    • {"n":"NaN"}
    • {}
    Voir la réponse

    {"n":null}

    JSON n'a pas de représentation de NaN ni de l'infini : ils deviennent null. Ce n'est pas une omission, contrairement à undefined dans un objet.