2010-10-11 15 views

Respuesta

170

jQuery solo hace algunas comprobaciones de expresiones regulares antes de llamar al método de navegador nativo window.JSON.parse(). Si no está disponible, 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 de Javascript en una cadena. jQuery no tiene funcionalidad de su propia para eso, hay que utilizar la versión integrada o json2.js navegador desde http://www.json.org

JSON.stringify() está disponible en todos los principales navegadores, pero para ser compatible con los navegadores más antiguos que todavía tienen que repliegue.

+3

esto puede ser útil: 'var theObject = (typeof data ==" string ")? jQuery.parseJSON (data): data; ' – roberthuttinger

+2

@tekretic: espero que estés trolling. Chrome implementa el objeto host 'JSON' desde el día 1. – jAndy

+4

@jAndy: Oh wow, lo siento. No trolling pero OH tan mal. Resulta que el soporte nativo de JSON fue [agregado a WebKit a mediados de 2009] (https://bugs.webkit.org/show_bug.cgi?id=20031), por lo que es compatible desde Chrome 3.0. Mi comentario anterior, totalmente inexacto, se basó en la mitad de [esta pregunta desactualizada] (http://stackoverflow.com/questions/1364842/json-is-not-defined-chrome) combinado con el CMS estoy trabajando en el momento en que realmente reemplaza a window.JSON con su propia biblioteca, lo que significa 'JSON.stringify()' no está definido. Muy un fracaso en todos los aspectos. – Molomby

12

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

2

Usted puede utilizar el excelente plugin de jQuery JSON:

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

Hace que sea fácil de convertir desde y hacia los objetos JSON.

+2

Recomiende los métodos de SPL sobre las bibliotecas de lógica complementaria. –

+0

Sea más claro, ¿qué significa SPL? –

+2

SPL = Biblioteca PHP estándar. Guess en este caso sería SJL (biblioteca javascript estándar). –

3

Convertir JavaScript objeto de 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