Tableau de Tableau, JSON.stringify() donnant tableau vide au lieu de l'ensemble de l'objet
Voici mon tableau (à partir de Chrome de la console):
Voici la partie pertinente de code:
console.log(hours);
var data = JSON.stringify(hours);
console.log(data);
Dans google Chrome, console j'obtiens []
de la dernière ligne. Je devrais obtenir {'Mon':{...}...}
Ici est le montant minimal de JavaScript pour reproduire le problème:
var test = [];
test["11h30"] = "15h00"
test["18h30"] = "21h30"
console.log(test);
console.log(JSON.stringify(test)); //outputs []
J'ai essayé quelques autres trucs comme
Convertir le tableau en JSON ou Convertir javascript objet ou un tableau json pour les données ajax mais le problème demeure.
Pourriez-vous faire un exemple vivant sur jsfiddle.net par exemple?
où obtenez-vous les Heures à partir de? Il ne semble pas comme un js tableau, il apparaît davantage comme un objet..
Vous avez un objet en se faisant passer pour un tableau il - les
Il semble que vous avez créé des tableaux (
Double Possible de le passage d'un tableau json.stringify, bien que les réponses ne vont pas dans les détails à propos de pourquoi un objet est nécessaire par rapport à un tableau.
où obtenez-vous les Heures à partir de? Il ne semble pas comme un js tableau, il apparaît davantage comme un objet..
Vous avez un objet en se faisant passer pour un tableau il - les
length
dit zéro et les propriétés sont nommés.Il semble que vous avez créé des tableaux (
[]
) lorsque vous avez réellement besoin d'objets ({}
). En JavaScript si vous souhaitez utiliser des touches numériques (par exemple, "11h30"), vous aurez besoin d'utiliser un objet à la place.Double Possible de le passage d'un tableau json.stringify, bien que les réponses ne vont pas dans les détails à propos de pourquoi un objet est nécessaire par rapport à un tableau.
OriginalL'auteur Eat Salad | 2015-02-13
Vous devez vous connecter pour publier un commentaire.
Ici est le montant minimal de javascript pour reproduire le problème
La question ci-dessus est que, tout en javascript sera heureuse de vous laisser la fin de-lier de nouvelles propriétés sur
Array
,JSON.stringify()
tente uniquement de sérialiser les éléments réels dans le tableau.Un changement minime pour faire de l'objet un objet réel, et
JSON.stringify
fonctionne comme prévu:Exactement ce dont j'avais besoin! Merci 🙂
var fixed = Object.assign({},test);
semble pour le "réparer" si vous ne pouvez pas suivre comment le tableau a été appelé ou ne pas le contrôler.Merci beaucoup pour le concept de base....perdu beaucoup de temps..
OriginalL'auteur Jamiec
Comme tous les objets en JavaScript, les Tableaux peuvent avoir propriétés avec chaîne-clés comme celles que vous utilisez. Mais seulement entier clés (ou les touches qui peuvent être proprement convertis en nombres entiers) sont en fait traités comme des éléments d'un Tableau. C'est pourquoi JSON n'est pas la capture de vos propriétés, et c'est aussi pourquoi les Tableaux sont tous les rapports de leur longueur zéro.
Si vous avez vraiment besoin d'utiliser non entier clés, vous devriez être en utilisant des Objets simples, pas des Tableaux. Cette méthode a ses propres problèmes -par exemple, vous devez être prudent avec les boucles for-in - mais JSON va fonctionner de la même manière que vous l'attendez.
OriginalL'auteur The Spooniest
Dans les tableaux javascript ont des index qui sont touches numériques. JSON.stringify suppose qu'une pile uniquement les propriétés qui sont des nombres.
Vous voulez utiliser un objet, que ce que vous avez n'est pas un tableau, mais ressemble à un dictionnaire.
Voici un exemple que j'ai fait:
http://jsfiddle.net/developerwithacaffeineproblem/pmxt8bwf/2/
Résultats dans:
"{"âge":1,"cars":2,"copines":3}"
Par la suite lorsque vous analysez les données si vous le souhaitez de le parcourir, vous pouvez utiliser un morceau de code similaire à ceci:
OriginalL'auteur DeveloperWithACaffeineProblem