0
votes

Les objets JSON contiennent-ils des clés personnalisées que les objets fonctionnent?

De ce que j'ai appris, JavaScript permet à n'importe quel type d'une valeur d'une clé à l'intérieur d'un objet comme: xxx pré>

mais permet seulement certains types de certains types pour les clés telles que la chaîne et les entiers : { "chaîne": "chaîne", 123: "Integer" } p>

Je suis tombé sur ceci lorsque j'ai écrit le code ci-dessous, cela et la clé a fini par être: [objet objet] code> p>

{"[object Object]":"value"}


1 commentaires

3 Réponses :


1
votes

Si vous essayez d'exécuter ceci, il produira code> valeur code> et si vous imprimez le type de clé, il sera String CODE>

let a = {}
let b = {}

b.name = {name: "name"}

a[b.name] = "value"

console.log(a['[object Object]'])
for (key in a) {
    console.log(typeof key);
    //-> "string"
}


0 commentaires

3
votes

Vous mélangez deux concepts différents. Les objets JSON et JavaScript - bien que similaires ne sont pas les mêmes. Vous pouvez lire sur La différence entre JSON et l'objet littéral Notation .

  • JSON a une grammaire et des propriétés limitées ne peuvent être des chaînes que.
  • A clé JavaScript '' S " La valeur est une chaîne ou une valeur de symbole ". Vous pouvez trouver plus d'informations dans Cette question .

    Et pourquoi affiche-t-il la clé comme [objet objet]?

    Parce que les clés ne peuvent être que des cordes ou des symboles. Toute autre valeur est forcée à une chaîne (par exemple en appelant la méthode Tostring de la valeur si disponible). ({}). Tostring () retourne "[objet d'objet]" `.

    Si vous souhaitez utiliser des objets comme touches, vous pouvez utiliser un Carte .


0 commentaires

1
votes

La clé d'un objet ne peut être qu'une chaîne ou un symbole. Lorsque vous mettez un objet dans [] code>, la représentation de la chaîne de cet objet est utilisée comme clé.

let a = {}
let b = {}
b.name = "name"
a[b.name] = "value"
console.log(JSON.stringify(a))


0 commentaires