Конвертировать массив в 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 и выше). Смотрите caniuse для полного списка. Кредит идет к: @Spudley для его комментария ниже


5
Это работает, есть ли в jQuery такая функция? Я предпочел бы не прикреплять другой файл js, если jQuery уже имеет функцию.
Дотти

1
В jQuery есть реализация JSON.parse в 1.4.1, но не JSON.stringify ... Если вы думаете, что json2.js его <3k, я думаю.
gnarf

6
Да, я был удивлен, что jQuery тоже не встроил это
JonoW

120
для тех, кто все еще читает этот ответ, стоит отметить, что все современные браузеры включают этот JSONобъект в качестве стандартного, что означает, что вам не нужен этот скрипт, если вы не планируете поддерживать более старые браузеры, такие как IE7 или Firefox 3.0. Смотрите CanIUse для поддержки диаграммы.
Спадли

1
Стоит отметить, что вы можете сделать это в консоли браузера: var a = [paste]; 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
Ты спас мне жизнь
доктор медицины. Shafayatul Haque


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 (cars)


1

потому что мой массив был как показано ниже: и я использовал функцию .push для ее динамического создания

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

Единственный способ, которым я преобразовал свой массив в JSON, это

json = Object.assign({}, my_array);
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.