2010-02-19 47 views
296

Tengo una matriz (var cars = []) que contiene algunos enteros. He agregado algunos valores a la matriz, pero ahora necesito enviar esta matriz a una página a través del método .get de jQuery. ¿Cómo puedo convertirlo a un objeto JSON para enviar?Convertir matriz a JSON

+0

Solo haciendo una doble comprobación: ¿la matriz que desea enviar a la página es una matriz de JavaScript o está en el servidor? –

+0

es una matriz Javascript, la enviaré a una secuencia de comandos de Python y Python utilizará la cadena JSON y trabajará con eso. – dotty

Respuesta

512

Guión para la compatibilidad hacia atrás: https://github.com/douglascrockford/JSON-js/blob/master/json2.js

Y llamada:

var myJsonString = JSON.stringify(yourArray); 

Nota:El objeto JSON es ahora parte de la mayoría de los navegadores web modernos (IE 8 & arriba). Ver caniuse para la lista completa. El crédito va a: @Spudley por su comentario debajo de

+5

Esto funciona, ¿jQuery tiene una función como esta? Preferiría no adjuntar otro archivo js si jQuery ya tiene una función. – dotty

+1

jQuery tiene la implementación de JSON.parse en 1.4.1, pero no JSON.stringify ... Si minifiy json2.js es <3k, creo. – gnarf

+6

Sí, me sorprendió jQuery no tenía esto incorporado también – JonoW

11

Decidí usar la biblioteca json2 y recibí un error sobre "estructuras de datos cíclicas".

Lo solucioné diciéndole a json2 cómo convertir mi objeto complejo. No solo funciona ahora sino que también incluí solo los campos que necesito. Aquí es cómo lo hice:

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

lo hice de esa manera:

si tengo:

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); 

para convertir pluginArrayArg (que es matriz de JavaScript puro) en una matriz JSON:

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

O intente definir la matriz como un objeto. (var cars = {};) Entonces no hay necesidad de convertir a json. Esto podría no ser práctico en su ejemplo, pero funcionó bien para mí.

11

Vaya, parece que ahora mucho más fácil hoy en día ... 3 maneras en que puede hacerlo:

json = { ...array }; 

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

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

En JavaScript, puede utilizar JSON.stringify para convertir una matriz o valores en un JSON cadena formateada

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

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

Si tiene solo 1 objeto como el que ha solicitado, lo siguiente funcionará.

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