Конвертировать массив в JSON - PullRequest
360 голосов
/ 19 февраля 2010

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

Ответы [ 8 ]

617 голосов
/ 19 февраля 2010

Скрипт для обратной совместимости: https://github.com/douglascrockford/JSON-js/blob/master/json2.js

И звоните:

var myJsonString = JSON.stringify(yourArray);

Примечание: Объект JSON теперь является частью большинства современных веб-браузеров (IE 8 и выше). Смотрите caniuse для полного списка. Кредит идет к: @Spudley для его комментария ниже

63 голосов
/ 04 января 2013

Я сделал это так:

если у меня есть:

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))
34 голосов
/ 19 декабря 2016

Ух ты, кажется, теперь стало намного проще ... 3 способа сделать это:

json = { ...array };

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

json = array.reduce((json, value, key) => { json[key] = value; return json; }, {});
11 голосов
/ 05 декабря 2013

Или попробуйте определить массив как объект. (var cars = {};) Тогда нет необходимости конвертировать в json. Это может быть непрактично в вашем примере, но хорошо сработало для меня.

11 голосов
/ 22 июня 2012

Я решил использовать библиотеку 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;
   }
1 голос
/ 05 января 2019

Еще один способ может быть таким:

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

        var json_string = JSON.stringify(json_arr);
1 голос
/ 02 марта 2018

Если у вас есть только 1 объект, подобный тому, который вы просили, сработает следующее.

var x = [{'a':'b'}];
var b= JSON.stringify(x);
var c = b.substring(1,b.length-1);
JSON.parse(c); 
0 голосов
/ 08 апреля 2019

Самый короткий из известных мне способов генерации действительного json из массива целых чисел:

let json = `[${cars}]`

для более общего объекта / массива (без циклических ссылок ) используйте JSON.stringify (cars)

let cars = [1,2,3]; cars.push(4,5,6);

let json = `[${cars}]`;

console.log(json);
console.log(JSON.parse(json)); // json validation
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...