2010-10-11 32 views

risposta

170

jQuery esegue solo alcune verifiche delle espressioni regolari prima di chiamare il metodo browser nativo window.JSON.parse(). Se questo non è disponibile, utilizza eval() o più esattamente new Function() per creare un oggetto Javascript.

L'opposto di JSON.parse() è JSON.stringify() che serializza un oggetto Javascript in una stringa. jQuery non ha la funzionalità di un proprio per questo, è necessario utilizzare la versione built-in o json2.js browser da http://www.json.org

JSON.stringify() è disponibile in tutti i principali browser, ma per essere compatibile con i vecchi browser è comunque necessario che ripiego.

+3

potrebbe essere utile: 'var theObject = (typeof data ==" string ")? jQuery.parseJSON (dati): dati; ' – roberthuttinger

+2

@tekretic: spero che stiate trollando. Chrome implementa l'oggetto host 'JSON' dal giorno 1. – jAndy

+4

@jAndy: Oh wow, mi dispiace. Non trollare ma OH così sbagliato. Il supporto JSON nativo è stato [aggiunto a WebKit a metà 2009] (https://bugs.webkit.org/show_bug.cgi?id=20031), rendendolo supportato da Chrome 3.0. Il mio commento precedente, completamente inaccurato, si basava su una metà di [questa domanda obsoleta] (http://stackoverflow.com/questions/1364842/json-is-not-defined-chrome) combinata con il CMS che sto lavorando al momento che effettivamente sostituisce window.JSON con la sua libreria, che significa 'JSON.stringify()' non è definito. Abbastanza un fallimento su tutti i fronti. – Molomby

12

Utile anche Object.toSource() ai fini del debug, in cui si desidera mostrare l'oggetto e le relative proprietà a scopo di debug. Questa è una funzione Javascript generica (non jQuery), tuttavia funziona solo con browser "moderni".

2

È possibile utilizzare l'ottimo plugin per jQuery-JSON:

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

rende facile da convertire da e verso gli oggetti JSON. JavaScript oggetto per i dati 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); 
}); 

È possibile convalidare i dati JSON

+2

Si consiglia di utilizzare i metodi SPL su librerie di logica aggiuntive. –

+0

Si prega di essere più chiaro, cosa significa SPL? –

+2

SPL = Libreria PHP standard. Indovinare in questo caso sarebbe SJL (libreria javascript standard). –