Convertir matriz a JSON


383

Tengo una matriz var cars = [2,3,..]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 .getmétodo de jQuery . ¿Cómo puedo convertirlo en un objeto JSON para enviar?


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

es una matriz de Javascript, la enviaré a un script de Python y Python usará la cadena JSON y trabajará con eso.
dotty

Respuestas:


657

Script para compatibilidad con versiones anteriores: https://github.com/douglascrockford/JSON-js/blob/master/json2.js

Y llama:

var myJsonString = JSON.stringify(yourArray);

Nota: El objeto JSON ahora es parte de la mayoría de los navegadores web modernos (IE 8 y superior). Ver caniuse para el listado completo. El crédito va a: @Spudley por su comentario a continuación


55
Esto funciona, ¿jQuery tiene una función como esta? Prefiero 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 minimizas json2.js es <3k, creo.
gnarf

66
Sí, me sorprendió que jQuery no tuviera esto incorporado también
JonoW

120
Para cualquiera que todavía lea esta respuesta, vale la pena señalar que todos los navegadores modernos incluyen el JSONobjeto como estándar, lo que significa que no necesita este script a menos que esté planeando admitir navegadores más antiguos como IE7 o Firefox 3.0. Consulte CanIUse para ver la tabla de soporte.
Spudley

1
Vale la pena señalar que puede hacer esto en una consola del navegador: var a = [pegar]; JSON.stringify (a)
Michael Cole

70

Lo hice así:

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 una matriz javascript pura) en una matriz JSON:

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

1
Me salvaste la vida
MD. Shafayatul Haque

45

Wow, parece que ahora es mucho más fácil ... 3 formas de hacerlo:

json = { ...array };

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

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

2
jsonString = JSON.stringify({ ...array })
Krishna Torque

11

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

Lo resolví diciéndole a json2 cómo convertir mi objeto complejo. No solo funciona ahora, sino que también he incluido solo los campos que necesito. Así es como 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;
   }

11

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


4

Otra forma podría ser esta:

        var json_arr = {};
        json_arr["name1"] = "value1";
        json_arr["name2"] = "value2";
        json_arr["name3"] = "value3";

        var json_string = JSON.stringify(json_arr);

1

Si solo tiene 1 objeto como el que solicitó, lo siguiente funcionará.

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


1

porque mi matriz era la siguiente: y utilicé la función .push para crearla dinámicamente

my_array = ["234", "23423"];

La única forma en que convertí mi matriz en json es

json = Object.assign({}, my_array);
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.