La conversion d'un objet en une chaîne
Comment puis-je convertir un objet JavaScript dans une chaîne de caractères?
Exemple:
var o = {a:1, b:2}
console.log(o)
console.log('Item: ' + o)
De sortie:
Objet { a=1, b=2} //très agréable lisible de sortie 🙂
Item: [object object] //aucune idée de ce qui est à l'intérieur 🙁
- Convertir en string dans quel but? Tu veux dire sérialiser sorte que vous pouvez construire l'objet, plus tard, à partir de la chaîne? Ou tout simplement pour l'affichage?
- L'auteur est parti depuis des années, mais la lecture à l'esprit, après des années, je pense, le point d'entrée pour le problème était la console.log(obj), qui affichent un objet avec les propriétés, tandis que la console.log('obj: '+obj) fonctionne disorientingly autrement.
- ne peuvent tout simplement pas s'appliquer ajouter deux objets, Si nous pouvons le faire il n'y aurait pas de diff dans le type de valeur et de type de référence.
- var o = {a:1, b:2}; console.log('Article:' + JSON.stringify(s))
- C'est peut-être intéressant de mentionner les jQuery makeArray()
- Tout d'abord je convertir des fonctions avec
String( func );
, puis-je convertir l'ensemble de l'objet avecJSON.stringify(obj);
- de cette façon, vous obtenez les fonctions' codes de trop... - Si c'est pour la console, je recommanderais de faire
console.log("Item", obj);
. Pas besoin de rien de compliqué. - Vous pouvez créer un
toString()
méthode: developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/... - Pour la console, utilisez la console.log ("texte: %S', obj); le %O dans la chaîne de caractères littérale sera remplacé par le premier paramètre supplémentaire, en supposant que c'est un objet.
Vous devez vous connecter pour publier un commentaire.
Je vous conseille d'utiliser
JSON.stringify
, qui convertit l'ensemble des variables de l'objet à une chaîne JSON. La plupart des navigateurs modernes prennent en charge cette méthode en natif, mais pour ceux qui ne le font pas, vous pouvez inclure un JS version:foo: function () {...}
.JSON.stringify(obj, null, 2);
pour une belle sortie.L'utilisation de javascript Chaîne de caractères() fonction
ou stringify()
.
"[object Object]"
..JSON.stringify(yourobject)
femme de chambre de ma journée!Sûr, pour convertir un objet en chaîne de caractères, vous devez utiliser votre propre méthode, telle que:
En fait, le ci-dessus montre l'approche générale; vous pouvez utiliser quelque chose comme http://phpjs.org/functions/var_export:578 ou http://phpjs.org/functions/var_dump:604
ou, si vous n'êtes pas en utilisant des méthodes (fonctions en tant que propriétés de votre objet), vous pourriez être en mesure d'utiliser la nouvelle norme (mais pas implémentée dans les navigateurs plus anciens, mais vous pouvez trouver une utilité à l'aide pour eux aussi), JSON.stringify(). Mais encore une fois, cela ne fonctionnera pas si l'objet qui utilise des fonctions ou d'autres propriétés qui ne sont pas sérialisables JSON.
Garder les choses simples avec
console
, vous pouvez simplement utiliser une virgule au lieu d'un+
. Le+
va essayer de convertir l'objet en chaîne de caractères, alors que la virgule affiche séparément dans la console.Exemple:
De sortie:
Référence: https://developer.mozilla.org/en-US/docs/Web/API/Console.log
console.log(o)
? Car si vous essayez de vous connecter un objet à une chaîne , il fait des appelstoString()
sur l'objet.console.log
en fin de compte les appels de quelque chose qui s'appelle laPrinter
qui la spec, notes: "Comment la mise en œuvre des impressions args est jusqu'à la mise en œuvre" - ce qui signifie que chaque navigateur peut faire différents (voir la section console.spec.whatwg.org/#printer). Firefox affichera les objets comme une chaîne de caractères, mais de couleur bien. Chrome affiche l'objet interactif en groupe que vous pouvez étendre à voir les propriétés. Essayez-le!console.log('Item: ', o);
est encoreItem: [object Object]
.MODIFIER Ne pas utiliser cette réponse car il ne fonctionne pas dans Internet Explorer. Utilisation Gary Chambres solution.
toSource() est la fonction vous êtes à la recherche pour qui va l'écrire sous forme de JSON.
toSource()
ne fonctionne pas dans IE.toSource()
n'est pas un standard reconnu, ne peut pas être garanti pour être pris en charge dans tous les navigateurs.Une option:
console.log('Item: ' + JSON.stringify(o));
Une autre option (comme soktinpk souligné dans les commentaires), et mieux pour la console de débogage de l'OMI:
console.log('Item: ', o);
Aucune des solutions ici a fonctionné pour moi. JSON.stringify semble être ce que beaucoup de gens disent, mais il supprime les fonctions et semble assez cassé pour certains objets et les tableaux que j'ai essayé lors de l'essai il.
J'ai fait ma propre solution qui fonctionne dans Chrome au moins. Le poster ici afin que toute personne qui regarde sur Google peut trouver.
EDIT: je sais ce code peut être amélioré, mais qui ne l'a jamais fait. L'utilisateur andrey suggéré une amélioration ici avec le commentaire:
L'utiliser à vos risques et périls, car je n'ai pas vérifié du tout. Hésitez pas à suggérer d'autres améliorations comme un commentaire.
,
à la fin de chaque objet/tableau.Si vous êtes juste à la sortie de la console, vous pouvez utiliser
console.log('string:', obj)
. Avis de la virgule.console.log
est souvent affiché après AJAX a terminé l'approvisionnement du tableau avec des données en parallèle, ce qui conduit à des résultats trompeurs. Dans de tels cas, le clonage ou la sérialisation des objets est la voie à suivre: depuis que nous avons enregistré objet dupliqué, même lors de l'AJAX a terminé son travail, il va combler les "vieux" de données.Dans le cas où vous savez que l'objet est un Booléen, Date, Chaîne, nombre, etc... le javascript de La fonction String() fonctionne très bien. J'ai récemment trouvé ce utile dans le traitement avec des valeurs provenant de jquery $.chaque fonction.
Par exemple convertir tous les éléments de la "valeur" d'une chaîne de caractères:
Plus de détails ici:
http://www.w3schools.com/jsref/jsref_string.asp
var my_string = ''+value+'';
J'étais à la recherche de ce, et a écrit une profonde récursive avec l'indentation :
Utilisation :
objToString({ a: 1, b: { c: "test" } })
if(ndeep > MAX_DEPTH_LEVEL){ return '...'; }
dans la fonction, avec MAX_DEPTH_LEVEL être choisi, max nombre de calques d'objet à creuser.Si vous voulez juste pour voir l'objet à des fins de débogage, vous pouvez utiliser
JSON méthodes sont très inférieures à moteur Gecko .toSource() primitive.
Voir le DONC, l'article de réponse pour les tests de comparaison.
Aussi, le la réponse ci-dessus se réfère à http://forums.devshed.com/javascript-development-115/tosource-with-arrays-in-ie-386109.html qui, comme JSON, (l'autre article http://www.davidpirek.com/blog/object-to-string-how-to-deserialize-json utilise via "ExtJs JSON encoder le code source") ne peut pas gérer les références circulaires et est incomplète. Le code ci-dessous montre qu'il est (usurpation de l') limites (corrigé pour manipuler les tableaux et les objets sans contenu).
(lien direct vers code //forums.devshed.com/... /tosource-avec-des tableaux-dans-ie-386109)
qui s'affiche:
et
et
obj.toSource()
était juste ce dont j'avais besoin, merci1.
2.
Il est en fait une option facile (pour les navigateurs récents et Node.js) manquant dans les réponses:
Je préfère ce que
JSON.stringify()
a certaines limites (par exemple, avec des structures circulaires).Que firefox n'a pas stringify un objet comme objet à l'écran ; si vous voulez avoir le même résultat comme :
JSON.stringify(obj)
:Si vous ne se soucient que des chaînes, des objets et des tableaux:
Il semble JSON accepter le deuxième paramètre qui pourrait aider avec les fonctions - de la poudre de, ce qui résout le problème de la conversion dans la manière la plus élégante:
Prendre un coup d'oeil à la jQuery JSON plugin
À sa base, il utilise JSON.stringify mais revient à sa propre analyseur si le navigateur ne prend pas la mettre en œuvre.
Pour les non-objets imbriqués:
stringify-object
est une bonne mnp bibliothèque faite par le yeoman équipe: https://www.npmjs.com/package/stringify-objectalors:
Bien évidemment, il est intéressant que si vous avez de l'objet circulaire qui échouerait avec
JSON.stringify();
Depuis Javascript v1.0 fonctionne partout (même IE)
c'est une approche autochtone et permet un très costomised look de votre objet pendant le débogage et la production
https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/Object/toString
Utile exemple
Aussi, comme un bonus
Si vous utilisez le Dojo framework javascript puis il y a déjà une fonction pour ce faire: dojo.la méthode toJson() qui serait utilisé comme.
qui renvoie une chaîne de caractères. Si vous voulez convertir l'objet en json données, puis ajouter un second paramètre de vrai.
http://dojotoolkit.org/reference-guide/dojo/toJson.html#dojo-tojson
exemple d'utilisation:
your_object1.txt:
your_object2.txt:
Pour ton exemple, je pense
console.log("Item:",o)
serait plus facile. Mais,
console.log("Item:" + o.toString)
serait aussi travailler.
L'aide de la méthode numéro un utilise une belle liste déroulante dans la console, donc un objet assez long, fonctionnerait bien.
J'espère que cet exemple de l'aide pour tous ceux qui travaillent sur le tableau d'objets
Si vous pouvez utiliser lodash vous pouvez le faire de cette façon:
Avec lodash
map()
vous pouvez effectuer une itération sur les Objets.Cette cartes à chaque clé/valeur entrée à sa représentation sous forme de chaîne:
Et
join()
mettre le tableau des entrées d'ensemble.Si vous pouvez utiliser ES6 Chaîne de Modèle, cela marche aussi:
Veuillez noter que cela ne va récursive par le biais de l'Objet:
Comme du nœud
util.inspecter()
fera:Si vous ne aplay join() de l'Objet.
Si vous voulez un minimaliste méthode de conversion d'une variable à une chaîne pour d'insertion de l'expression type de situation,
''+variablename
est le meilleur que j'ai ont joué au golf.Si 'variablename' est un objet et que vous utilisez une chaîne de caractères vide opération de concaténation, il vous donnera l'ennuyeux
[object Object]
, dans lequel cas, vous voudrez probablement Gary C. est extrêmement upvotedJSON.stringify
de répondre à la question posée, que vous pouvez lire sur Mozilla Developer Network sur le lien dans la réponse au dessus.J'avais besoin de faire un plus configurable version de
JSON.stringify
que j'ai dû ajouter des commentaires et de savoir le JSON chemin:JS:
Si tout ce que vous voulez simplement obtenir une chaîne de caractères en sortie, alors cela devrait fonctionner:
String(object)