Convertir un tableau en JSON

J'ai un tableau (var cars = []) qui contient quelques entiers. J'ai ajouté quelques valeurs au tableau, mais je dois maintenant envoyer ce tableau à une page via la méthode .get de jQuery. Comment puis-je le convertir en un objet JSON pour l'envoi?

332
demandé sur Ry- 2010-02-19 13:18:53

7 réponses

Script pour la rétrocompatibilité: https://github.com/douglascrockford/JSON-js/blob/master/json2.js

Et appelez:

var myJsonString = JSON.stringify(yourArray);

Note: L'objet JSON fait maintenant partie de la plupart des navigateurs Web modernes (IE 8 et ci-dessus). Voir caniuse pour la liste complète. Le crédit va à: @ Spudley pour son commentaire ci-dessous

565
répondu JonoW 2014-03-28 06:55:32

Je l'ai fait de cette façon:

Si j'ai:

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

Pour convertir pluginArrayArg (qui est un tableau javascript pur) en tableau JSON:

var jsonArray = JSON.parse(JSON.stringify(pluginArrayArg))
57
répondu Stancho Stanchev 2013-01-04 13:35:35

Wow, il semble que c'est devenu beaucoup plus facile de nos jours... 3 façons de le faire:

json = { ...array };

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

json = array.reduce((json, value, key) => { json[key] = value; return json; }, {});
21
répondu Eduardo Sganzerla 2016-12-19 03:39:15

J'ai décidé d'utiliser la bibliothèque json2 et j'ai eu une erreur sur "structures de données cycliques".

Je l'ai résolu en disant à json2 comment convertir mon objet complexe. Non seulement cela fonctionne maintenant, mais je n'ai inclus que les champs dont j'ai besoin. Voici comment je l'ai fait:

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
répondu Paulo Pedroso 2012-06-22 12:42:39

Ou essayez de définir le tableau en tant qu'objet. (var voitures = {};) Alors il n'y a pas besoin de convertir en json. Cela pourrait ne pas être pratique dans votre exemple, mais a bien fonctionné pour moi.

11
répondu think win win 2014-09-03 20:23:35

En JavaScript, vous pouvez utiliser JSON.stringify {[3] } pour convertir un tableau ou des valeurs en une chaîne au format JSON.

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

console.log( JSON.stringify(output) );
0
répondu Pankaj Mandale 2017-10-16 15:26:29

Si vous avez seulement 1 objet comme celui que vous avez demandé, le travail.

var x = [{'a':'b'}];
var b= JSON.stringify(x);
var c = b.substring(1,b.length-1);
JSON.parse(c); 
0
répondu Mahmoud ihmaid 2018-03-02 19:25:50