У меня есть Array (var cars = []
), который содержит несколько целых чисел.
Я добавил несколько значений в массив, но теперь мне нужно отправить этот массив на страницу с помощью метода jQuery .get
. Как преобразовать его в объект JSON для отправки?
Преобразование массива в JSON
Ответ 1
Script для обратной совместимости: https://github.com/douglascrockford/JSON-js/blob/master/json2.js
И вызов:
var myJsonString = JSON.stringify(yourArray);
Примечание. Объект JSON теперь является частью большинства современных веб-браузеров (IE 8 и выше). Подробнее см. caniuse. Кредит: @Spudley за комментарий ниже
Ответ 2
Я сделал это так:
если у меня есть:
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))
Ответ 3
Ничего себе, кажется, теперь стало намного проще... 3 способа сделать это:
json = { ...array };
json = Object.assign({}, array);
json = array.reduce((json, value, key) => { json[key] = value; return json; }, {});
Ответ 4
Я решил использовать библиотеку 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;
}
Ответ 5
Или попробуйте определить массив как объект. (var cars = {};) Тогда нет необходимости конвертировать в json. Это может быть непрактично в вашем примере, но хорошо для меня.
Ответ 6
В JavaScript вы можете использовать JSON.stringify для преобразования массива или значений в форматированную строку JSON.
var output = {}
output[0] = "a";
output[1] = "b";
output[2] = "c";
console.log( JSON.stringify(output) );
Ответ 7
Если у вас есть только один объект, как тот, который вы задали, будет работать следующее.
var x = [{'a':'b'}];
var b= JSON.stringify(x);
var c = b.substring(1,b.length-1);
JSON.parse(c);