Diziyi JSON'a dönüştür


383

Ben bir Array var var cars = [2,3,..]birkaç tamsayılar tutar. Diziye birkaç değer ekledim, ancak şimdi bu diziyi jQuery'nin .getyöntemi aracılığıyla bir sayfaya göndermem gerekiyor . Bunu göndermek için nasıl JSON nesnesine dönüştürebilirim?


Sadece iki kez kontrol edin: sayfaya göndermek istediğiniz dizi bir JavaScript dizisi mi yoksa sunucuda mı?
Ian Oxley

bu bir Javascript dizisi, ben bir Python betiğine göndereceğim ve Python JSON dizesini kullanacak ve bununla çalışacaktır.
Dotty

Yanıtlar:


657

Geriye dönük uyumluluk için komut dosyası: https://github.com/douglascrockford/JSON-js/blob/master/json2.js

Ve Çağrı yap:

var myJsonString = JSON.stringify(yourArray);

Not: JSON nesnesi artık çoğu modern web tarayıcısının (IE 8 ve üstü) bir parçasıdır. Bkz caniuse tam liste için. Kredi şu şekilde: @Spudley aşağıdaki yorumu için


5
Bu çalışır, jQuery böyle bir işlevi var mı? JQuery zaten bir işlevi varsa başka bir js dosyası eklememeyi tercih ederim.
Dotty

1
jQuery 1.4.1 JSON.parse uygulanması vardır, ama JSON.stringify değil ... json2.js minifiy eğer onun <3k düşünüyorum.
gnarf

6
Evet ben şaşırdım jQuery bu da inşa yoktu
JonoW

120
hala bu yanıtı okuyan herkes için, tüm modern tarayıcıların JSONnesneyi standart olarak içerdiğini belirtmek gerekir , yani IE7 veya Firefox 3.0 gibi eski tarayıcıları desteklemeyi planlamıyorsanız bu komut dosyasına ihtiyacınız yoktur . Destek tablosu için CanIUse'a bakın .
Spudley

1
Bunu bir tarayıcı konsolunda yapabileceğinizi belirtmek gerekir: var a = [paste]; JSON.stringify (a)
Michael Cole

70

Bu şekilde yaptım:

sahip olursam:

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

pluginArrayArg (saf javascript dizisi olan) JSON dizisine dönüştürmek için:

var jsonArray = JSON.parse(JSON.stringify(pluginArrayArg))

1
Hayatımı kurtardın
MD. Shafayatul Haque

44

Vay be, bugünlerde çok daha kolay görünüyor ... Bunu yapmanın 3 yolu:

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

Json2 kütüphanesini kullanmaya karar verdim ve “döngüsel veri yapıları” hakkında bir hata aldım.

Json2'ye karmaşık nesnesimi nasıl dönüştüreceğimizi söyleyerek çözdüm. Sadece şimdi değil, aynı zamanda sadece ihtiyacım olan alanları da ekledim. İşte nasıl yaptım:

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

Veya diziyi bir nesne olarak tanımlamayı deneyin. (var cars = {};) O zaman json'a dönüştürmeye gerek yoktur. Bu, örneğinizde pratik olmayabilir, ancak benim için iyi çalıştı.


4

Başka bir yol şu olabilir:

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

        var json_string = JSON.stringify(json_arr);

1

İstediğiniz gibi yalnızca 1 nesneniz varsa, aşağıdakiler işe yarayacaktır.

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

1

Tamsayı dizisinden geçerli json oluşturmayı bildiğim en kısa yol

let json = `[${cars}]`

daha genel nesne / dizi için ( dairesel referanslar olmadan ) JSON.stringify (cars) kullanın


1

çünkü dizim aşağıdaki gibiydi: ve dinamik olarak oluşturmak için .push işlevini kullandım

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

Dizimi json'a dönüştürmenin tek yolu

json = Object.assign({}, my_array);
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.