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?


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


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

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; }, {});

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

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.


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

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

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)


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);
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.