Konversi array ke JSON

383

Saya memiliki Array var cars = [2,3,..]yang menampung beberapa bilangan bulat. Saya telah menambahkan beberapa nilai ke array, tetapi sekarang saya harus mengirim array ini ke halaman melalui .getmetode jQuery . Bagaimana saya bisa mengubahnya menjadi objek JSON untuk dikirim?

Dotty
sumber
Cukup periksa ulang: apakah larik yang ingin Anda kirim ke halaman larik JavaScript atau ada di server?
Ian Oxley
ini adalah array Javascript, saya akan mengirimkannya ke skrip Python dan Python akan menggunakan string JSON dan bekerja dengannya.
Dotty

Jawaban:

657

Skrip untuk kompatibilitas mundur: https://github.com/douglascrockford/JSON-js/blob/master/json2.js

Dan telepon:

var myJsonString = JSON.stringify(yourArray);

Catatan: Objek JSON sekarang menjadi bagian dari sebagian besar browser web modern (IE 8 & di atas). Lihat caniuse untuk daftar lengkap. Kredit jatuh ke: @Spudley untuk komentarnya di bawah

JonoW
sumber
5
Ini berfungsi, apakah jQuery memiliki fungsi seperti ini? Saya lebih suka untuk tidak melampirkan file js lain jika jQuery sudah memiliki fungsi.
Dotty
1
jQuery memiliki implementasi JSON.parse di 1.4.1, tetapi tidak JSON.stringify ... Jika Anda mengecilkan json2.js <3k saya rasa.
gnarf
6
Ya saya terkejut jQuery tidak memiliki ini dibangun juga
JonoW
120
bagi siapa pun yang masih membaca jawaban ini, ada baiknya menunjukkan bahwa semua browser modern menyertakan JSONobjek sebagai standar, yang berarti bahwa Anda tidak memerlukan skrip ini kecuali Anda berencana untuk mendukung browser lama seperti IE7 atau Firefox 3.0. Lihat CanIUse untuk grafik dukungan.
Spudley
1
Layak untuk menunjukkan bahwa Anda dapat melakukan ini di konsol browser: var a = [paste]; JSON.stringify (a)
Michael Cole
70

Saya membuatnya seperti itu:

jika saya punya:

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

untuk mengubah pluginArrayArg (yang merupakan array javascript murni) menjadi array JSON:

var jsonArray = JSON.parse(JSON.stringify(pluginArrayArg))
Stancho Stanchev
sumber
1
Anda menyelamatkan hidup saya
MD. Shafayatul Haque
44

Wow, sepertinya ini menjadi jauh lebih mudah saat ini ... 3 cara Anda dapat melakukannya:

json = { ...array };

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

json = array.reduce((json, value, key) => { json[key] = value; return json; }, {});
Eduardo Sganzerla
sumber
2
jsonString = JSON.stringify({ ...array })
Krishna Torque
11

Saya memutuskan untuk menggunakan perpustakaan json2 dan saya mendapatkan kesalahan tentang "struktur data siklik".

Saya menyelesaikannya dengan memberi tahu json2 cara mengubah objek kompleks saya. Tidak hanya berfungsi sekarang tetapi saya juga hanya menyertakan bidang yang saya butuhkan. Inilah cara saya melakukannya:

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
sumber
11

Atau coba definisikan array sebagai objek. (var cars = {};) Maka tidak perlu mengkonversi ke json. Ini mungkin tidak praktis dalam contoh Anda tetapi bekerja dengan baik untuk saya.

Frank Adrian
sumber
4

Satu cara lain bisa jadi ini:

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

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

Jika Anda hanya memiliki 1 objek seperti yang Anda tanyakan, berikut ini akan berfungsi.

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

Cara terpendek yang saya tahu untuk menghasilkan json yang valid dari array integer adalah

let json = `[${cars}]`

untuk objek / array yang lebih umum (tanpa referensi melingkar ) gunakan JSON.stringify (mobil)

Kamil Kiełczewski
sumber
1

karena array saya seperti di bawah ini: dan saya menggunakan fungsi .push untuk membuatnya secara dinamis

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

Satu-satunya cara saya mengubah array saya menjadi json adalah

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