Convertir un objet en chaîne JSON

Réponses:

188

jQuery ne fait que quelques vérifications de regexp avant d'appeler la méthode native du navigateur window.JSON.parse(). Si ce n'est pas disponible, il utilise eval()ou plus exactement new Function()pour créer un objet Javascript.

Le contraire JSON.parse()est de JSON.stringify()sérialiser un objet Javascript en une chaîne. jQuery n'a pas de fonctionnalité propre pour cela, vous devez utiliser la version intégrée du navigateur ou json2.jsdepuis http://www.json.org

JSON.stringify() est disponible dans tous les principaux navigateurs, mais pour être compatible avec les anciens navigateurs, vous avez toujours besoin de cette solution de secours.

jAndy
la source
4
cela peut être utile:var theObject = (typeof data == "string") ? jQuery.parseJSON(data) : data;
roberthuttinger
2
@tekretic: J'espère que vous êtes à la traîne. Chrome implémente l' JSONobjet hôte depuis le jour 1.
jAndy
5
@jAndy: Oh wow, désolé. Pas de pêche à la traîne mais OH tellement faux. Il s'avère que la prise en charge native de JSON a été ajoutée à WebKit à la mi-2009 , ce qui la rend prise en charge depuis Chrome 3.0. Mon commentaire précédent, totalement inexact, était basé sur la moitié de cette question obsolète combinée au CMS sur lequel je travaille en ce moment qui remplace en fait window.JSON par sa propre bibliothèque, le sens JSON.stringify()n'est pas défini. Un échec à tous égards.
Molomby
13
Pour les personnes intéressées, voici un joli tableau de la prise en charge native du JSON dans différents navigateurs .
Molomby
1
@jAndy: ne me confondez pas; : JSON.stringify `` sérialise '' un objet, veuillez dire que c'est juste une erreur
demi
12

Object.toSource () est également utile à des fins de débogage, où vous souhaitez afficher l'objet et ses propriétés à des fins de débogage. C'est une fonction Javascript générique (pas jQuery), mais elle ne fonctionne que dans les navigateurs "modernes".

Excalibur
la source
4

Convertir un objet JavaScript en données JSON

$("form").submit(function(event){
  event.preventDefault();
  var formData = $("form").serializeArray(); // Create array of object
  var jsonConvertedData = JSON.stringify(formData);  // Convert to json
  consol.log(jsonConvertedData);
});

Vous pouvez valider les données json en utilisant http://jsonlint.com

Subroto Biswas
la source
2

Vous pouvez utiliser l'excellent plugin jquery-Json:

http://code.google.com/p/jquery-json/

Facilite la conversion vers et depuis des objets Json.

George Filippakos
la source
2
Veuillez recommander les méthodes SPL plutôt que les bibliothèques logiques complémentaires.
David J Eddy
2
SPL = Bibliothèque PHP standard. Je suppose que dans ce cas, ce serait SJL (bibliothèque javascript standard).
David J Eddy
3
La question concerne jQuery et Javascript. Cela n'a rien à voir avec PHP, les bibliothèques PHP ou SPL.
George Filippakos
3
les bibliothèques standard sont des bibliothèques standard; peu importe la langue. Mon point est qu'il est préférable de recommander une solution qui enseigne la langue sur le syndrome de «utiliser ce plugin».
David J Eddy
1
Exactement, pourquoi réinventer la roue ... utiliser les capacités standard d'un langage sur un 'plugin' mais je m'éloigne du sujet.
David J Eddy