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.


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


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".


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


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.


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
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.