Convertir objeto a cadena JSON

Respuestas:

188

jQuery solo realiza algunas comprobaciones de expresiones regulares antes de llamar al método de navegador nativo window.JSON.parse(). Si eso no está disponible, se usa eval()o más exactamente new Function()para crear un objeto Javascript.

Lo contrario de JSON.parse()es JSON.stringify()que serializa un objeto Javascript en una cadena. jQuery no tiene funcionalidad propia para eso, debe usar la versión incorporada del navegador o json2.jsdesde http://www.json.org

JSON.stringify() está disponible en todos los principales navegadores, pero para ser compatible con los navegadores más antiguos, aún necesita ese respaldo.

jAndy
fuente
44
esto puede ser útil:var theObject = (typeof data == "string") ? jQuery.parseJSON(data) : data;
roberthuttinger
2
@tekretic: Espero que estés trolleando. Chrome implementa el JSONobjeto host desde el día 1.
jAndy
55
@ jAndy: Oh wow, lo siento. No trolling pero OH tan mal. Resulta que el soporte nativo de JSON se agregó a WebKit a mediados de 2009 , por lo que es compatible desde Chrome 3.0. Mi comentario anterior, totalmente inexacto, se basó en la mitad de esta pregunta obsoleta combinada con el CMS en el que estoy trabajando en este momento, que en realidad reemplaza a window.JSON con su propia biblioteca, lo que significa JSON.stringify()que no está definido. Todo un fracaso en todos los aspectos.
Molomby
13
Para aquellos interesados, aquí hay un buen gráfico de soporte nativo de JSON en diferentes navegadores .
Molomby
1
@ jAndy: no me confundas; : JSON.stringify 'serializa' un objeto, por favor diga que es solo un error
halfbit
12

También es útil Object.toSource () para fines de depuración, donde desea mostrar el objeto y sus propiedades para fines de depuración. Esta es una función genérica de Javascript (no jQuery), sin embargo, solo funciona en navegadores "modernos".

Excalibur
fuente
4

Convertir objeto JavaScript en datos 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);
});

Puede validar datos json usando http://jsonlint.com

Subroto Biswas
fuente
2

Puede usar el excelente complemento jquery-Json:

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

Facilita la conversión hacia y desde objetos Json.

George Filippakos
fuente
2
Por favor, recomiende los métodos SPL sobre las bibliotecas lógicas complementarias.
David J Eddy
2
SPL = Biblioteca PHP estándar. Supongo que en este caso sería SJL (biblioteca estándar de JavaScript).
David J Eddy
3
La pregunta es sobre jQuery y Javascript. No tiene nada que ver con PHP, bibliotecas PHP o SPL.
George Filippakos
3
las bibliotecas estándar son bibliotecas estándar; no importa el idioma Mi punto es que es mejor recomendar una solución que enseñe el lenguaje sobre el síndrome de 'usar este complemento'.
David J Eddy el
1
Exactamente, por qué reinventar la rueda ... usar las habilidades estándar de un idioma sobre un 'plugin' pero estoy divagando.
David J Eddy el