Convertir un tableau en JSON

383

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

dingue
la source
Juste une double vérification: le tableau que vous souhaitez envoyer à la page est-il un tableau JavaScript ou est-il sur le serveur?
Ian Oxley
c'est un tableau Javascript, je l'enverrai à un script Python et Python utilisera la chaîne JSON et fonctionnera avec.
dotty

Réponses:

657

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

Et appelez:

var myJsonString = JSON.stringify(yourArray);

Remarque: l' objet JSON fait désormais partie de la plupart des navigateurs Web modernes (IE 8 et versions ultérieures). Voir caniuse pour la liste complète. Nous remercions: @Spudley pour son commentaire ci-dessous

JonoW
la source
5
Cela fonctionne, jQuery a-t-il une fonction comme celle-ci? Je préfère ne pas joindre un autre fichier js si jQuery a déjà une fonction.
dotty
1
jQuery a l'implémentation de JSON.parse dans 1.4.1, mais pas JSON.stringify ... Si vous minimisez json2.js son <3k je pense.
gnarf
6
Ouais, j'ai été surpris que jQuery n'ait pas intégré cela aussi
JonoW
120
pour tous ceux qui lisent encore cette réponse, il convient de souligner que tous les navigateurs modernes incluent l' JSONobjet en standard, ce qui signifie que vous n'avez pas besoin de ce script, sauf si vous prévoyez de prendre en charge des navigateurs plus anciens comme IE7 ou Firefox 3.0. Voir CanIUse pour le tableau de support.
Spudley
1
Il convient de souligner que vous pouvez le faire dans une console de navigateur: var a = [paste]; JSON.stringify (a)
Michael Cole
70

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))
Stancho Stanchev
la source
1
Tu m'as sauvé la vie
MD. Shafayatul Haque
45

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; }, {});
Eduardo Sganzerla
la source
2
jsonString = JSON.stringify({ ...array })
Krishna Torque
11

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 disant à 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;
   }
Paulo Pedroso
la source
11

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

Frank Adrian
la source
4

Une autre façon pourrait être la suivante:

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

        var json_string = JSON.stringify(json_arr);
Vijay Bansal
la source
1

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); 
Mahmoud ihmaid
la source
1

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)

Kamil Kiełczewski
la source
1

parce que mon tableau était comme ci-dessous: et j'ai utilisé la fonction .push pour le créer dynamiquement

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

La seule façon dont j'ai converti mon tableau en json est

json = Object.assign({}, my_array);
Harshal Lonare
la source