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

310

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

  • 0
    Просто дважды проверьте: массив, который вы хотите отправить на страницу, - это массив JavaScript или он находится на сервере?
  • 0
    это массив Javascript, я буду отправлять его скрипту Python, а Python будет использовать строку JSON и работать с ней.
Теги:
arrays

7 ответов

524
Лучший ответ

Script для обратной совместимости: /json2.js

И вызов:

var myJsonString = JSON.stringify(yourArray);

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

  • 5
    Это работает, есть ли в jQuery такая функция? Я бы предпочел не прикреплять другой js-файл, если в jQuery уже есть функция.
  • 1
    JQuery имеет реализацию JSON.parse в 1.4.1, но не JSON.stringify ... Если вы минифицируете json2.js его <3k, я думаю.
Показать ещё 5 комментариев
56

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

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

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))
  • 0
    Вы спасли мою жизнь
22

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

json = { ...array };

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

json = array.reduce((json, value, key) => { json[key] = value; return json; }, {});
  • 0
    json = { ...array }; работал хорошо. Спасибо!
11

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

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;
   }
0

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

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

В JavaScript вы можете использовать JSON.stringify для преобразования массива или значений в форматированную строку JSON.

var output = {}
output[0] = "a";
output[1] = "b";
output[2] = "c";

console.log( JSON.stringify(output) );

Ещё вопросы

Сообщество Overcoder
Наверх
Меню