web-dev-qa-db-fra.com

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 objet JSON pour l'envoi?

348
dotty

Script de compatibilité ascendante: https://github.com/douglascrockford/JSON-js/blob/master/json2.js

Et appelez:

var myJsonString = JSON.stringify(yourArray);

Remarque: L'objet JSON fait maintenant partie des navigateurs Web les plus modernes (IE 8 et versions ultérieures). Voir caniuse pour une liste complète. Le crédit va à: @Spudley pour son commentaire ci-dessous

622
JonoW

Je l'ai fait comme ça:

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 (un tableau javascript pur) en tableau JSON:

var jsonArray = JSON.parse(JSON.stringify(pluginArrayArg))
61
Stancho Stanchev

Wow, il semble que cela soit 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; }, {});
28
Eduardo Sganzerla

Ou essayez de définir le tableau en tant qu'objet. (var cars = {};) Il n'est alors pas nécessaire de convertir en json. Cela pourrait ne pas être pratique dans votre exemple mais a bien fonctionné pour moi.

11
think win win

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

Je l'ai résolu en expliquant à json2 comment convertir mon objet complexe. Non seulement cela fonctionne maintenant, mais j'ai également inclus uniquement 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
Paulo Pedroso

Un autre moyen pourrait être ceci:

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

        var json_string = JSON.stringify(json_arr);
0
Vijay Bansal

Si vous n'avez qu'un seul objet comme celui que vous avez demandé, ce qui suit fonctionnera.

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

Le moyen le plus court que je connaisse pour générer un json valide à partir d'un tableau d'entiers est

let json = `[${cars}]`

pour un objet/tableau plus général (sans références circulaires ), utilisez JSON.stringify (cars)

let cars = [1,2,3]; cars.Push(4,5,6);

let json = `[${cars}]`;

console.log(json);
console.log(JSON.parse(json)); // json validation
0