it-swarm.com.ru

Конвертировать массив в JSON

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

348
dotty

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

И позвоните:

var myJsonString = JSON.stringify(yourArray);

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

594
JonoW

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

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

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))
61
Stancho Stanchev

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

json = { ...array };

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

json = array.reduce((json, value, key) => { json[key] = value; return json; }, {});
28
Eduardo Sganzerla

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

11
think win win

Я решил использовать библиотеку 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
Paulo Pedroso

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

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

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

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

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

Самый короткий способ, которым я знаю, чтобы создать действительный 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
0
Kamil Kiełczewski