Перетворити масив в JSON


383

У мене є масив, var cars = [2,3,..]який містить кілька цілих чисел. Я додав до масиву кілька значень, але тепер мені потрібно надіслати цей масив на сторінку за допомогою .getметоду jQuery . Як я можу конвертувати його в об'єкт JSON для надсилання?


Просто двічі перевірте: це масив, який ви хочете надіслати на сторінку, масив JavaScript чи це на сервері?
Ян Окслі

це масив Javascript, я надсилаю його до сценарію Python, і Python буде використовувати рядок JSON і працювати з цим.
крапка

Відповіді:


657

Сценарій зворотної сумісності: https://github.com/douglascrockford/JSON-js/blob/master/json2.js

І дзвоніть:

var myJsonString = JSON.stringify(yourArray);

Примітка: Об'єкт JSON зараз є частиною більшості сучасних веб-браузерів (IE 8 і вище). Дивіться канюзу для повного переліку. Кредит належить: @Spudley за його коментар нижче


5
Це працює, чи має така функція jQuery? Я вважаю за краще не вкладати інший js-файл, якщо jQuery вже має функцію.
крапка

1
jQuery має реалізацію JSON.parse в 1.4.1, але не JSON.stringify ... Якщо ви minifiy json2.js його <3k, я думаю.
gnarf

6
Так, я здивувався, у jQuery теж не було вбудованого
JonoW,

120
для тих, хто ще читає цю відповідь, варто зазначити, що всі сучасні браузери включають JSONоб’єкт як стандартний, а це означає, що цей сценарій вам не потрібен, якщо ви не плануєте підтримувати старіші браузери, такі як IE7 або Firefox 3.0. Дивіться CanIUse для діаграми підтримки.
Спудлі

1
Варто зазначити, що ви можете це зробити на консолі браузера: var a = [вставити]; JSON.stringify (a)
Майкл Коул

70

Я зробив це так:

якщо я маю:

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 (який є чистим масивом javascript) в масив JSON:

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

1
Ти врятував мені життя
доктор медицини. Шафаятул Хаке


11

Я вирішив використати бібліотеку json2, і у мене з’явилася помилка щодо «циклічних структур даних».

Я вирішив це, розповівши json2, як перетворити мій складний об'єкт. Не тільки це працює зараз, але і я включив лише потрібні мені поля. Ось як я це зробив:

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

Або спробуйте визначити масив як об’єкт. (var cars = {};) Тоді не потрібно перетворюватися на json. Це не може бути практичним у вашому прикладі, але добре працювало для мене.


4

Ще один спосіб може бути таким:

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

        var json_string = JSON.stringify(json_arr);

1

Якщо у вас є лише 1 об’єкт, як той, про який ви запитували, наступне буде працювати.

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

1

Найкоротший спосіб, з якого я знаю, генерувати дійсний json з масиву цілих чисел

let json = `[${cars}]`

для більш загального об'єкта / масиву (без кругових посилань ) використовуйте JSON.stringify (машини)


1

тому що мій масив був як нижче: і я використовував .push функцію, щоб створити його динамічно

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

Єдиний спосіб я перетворив свій масив у json

json = Object.assign({}, my_array);
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.