2010-02-19 31 views
296

Ho una matrice (var cars = []) che contiene alcuni numeri interi. Ho aggiunto alcuni valori all'array, ma ora devo inviare questo array a una pagina tramite il metodo .get di jQuery. Come posso convertirlo in un oggetto JSON per l'invio?Converti array in JSON

+0

Basta ricontrollare: è la matrice che si desidera inviare alla pagina un array JavaScript o è sul server? –

+0

è un array Javascript, lo invierò a uno script Python e Python userà la stringa JSON e lavorerà con quello. – dotty

risposta

512

Script per backward-compatibilità: https://github.com/douglascrockford/JSON-js/blob/master/json2.js

e chiamare:

var myJsonString = JSON.stringify(yourArray); 

Nota:L'oggetto JSON è ora parte della maggior parte dei browser web moderni (sopra IE 8 &). Vedi caniuse per l'elenco completo. Il merito va a: @Spudley per il suo commento sotto

+5

Funziona, jQuery ha una funzione come questa? Preferirei non allegare un altro file js se jQuery ha già una funzione. – dotty

+1

jQuery ha l'implementazione di JSON.parse in 1.4.1, ma non JSON.stringify ... Se si minimizza json2.js è <3k penso. – gnarf

+6

Sì, mi ha sorpreso jQuery non ha incorporato anche questo – JonoW

11

Ho deciso di utilizzare la libreria json2 e ho ricevuto un errore su "strutture dati cicliche".

L'ho risolto dicendo a json2 come convertire il mio oggetto complesso. Non solo funziona ora ma ho incluso solo i campi di cui ho bisogno. Ecco come ho fatto:

OBJ.prototype.toJSON = function (key) { 
     var returnObj = new Object(); 
     returnObj.devid = this.devid; 
     returnObj.name = this.name; 
     returnObj.speed = this.speed; 
     returnObj.status = this.status; 
     return returnObj; 
    } 
51

ho fatto in questo modo:

se ho:

var jsonArg1 = new Object(); 
    jsonArg1.name = 'calc this'; 
    jsonArg1.value = 3.1415; 
var jsonArg2 = new Object(); 
    jsonArg2.name = 'calc this again'; 
    jsonArg2.value = 2.73; 

var pluginArrayArg = new Array(); 
    pluginArrayArg.push(jsonArg1); 
    pluginArrayArg.push(jsonArg2); 

per convertire pluginArrayArg (che è puro array JavaScript) in una matrice JSON:

var jsonArray = JSON.parse(JSON.stringify(pluginArrayArg)) 
11

Oppure provare a definire l'array come un oggetto. (var cars = {};) Quindi non è necessario convertire in json. Questo potrebbe non essere pratico nel tuo esempio, ma ha funzionato bene per me.

11

Wow, sembra ha ottenuto molto più facile al giorno d'oggi ... 3 modi per farlo:

json = { ...array }; 

json = Object.assign({}, array); 

json = array.reduce((json, value, key) => { json[key] = value; return json; }, {}); 
0

In JavaScript, è possibile utilizzare JSON.stringify per convertire un array o valori in un JSON stringa formattata.

var output = {} 
output[0] = "a"; 
output[1] = "b"; 
output[2] = "c"; 

console.log(JSON.stringify(output)); 
0

Se si dispone di un solo oggetto come quello richiesto, funzionerà quanto segue.

var x = [{'a':'b'}]; 
var b= JSON.stringify(x); 
var c = b.substring(1,b.length-1); 
JSON.parse(c);