将数组转换为JSON

时间:2010-02-19 10:18:54

标签: javascript jquery json arrays

我有一个数组var cars = [2,3,..],它包含几个整数。 我已经为数组添加了一些值,但我现在需要通过jQuery的.get方法将此数组发送到页面。如何将其转换为JSON对象以进行发送?

10 个答案:

答案 0 :(得分:609)

向后兼容的脚本: https://github.com/douglascrockford/JSON-js/blob/master/json2.js

并致电:

var myJsonString = JSON.stringify(yourArray);

注意: JSON对象现在是大多数现代Web浏览器(IE 8及以上版本)的一部分。有关完整列表,请参阅caniuse。归功于:@Spudley在下面发表评论

答案 1 :(得分:63)

我这样做了:

如果我有:

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

答案 2 :(得分:33)

哇,现在看起来好多了......你可以做3种方法:

json = { ...array };

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

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

答案 3 :(得分: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;
   }

答案 4 :(得分:11)

或尝试将数组定义为对象。 (var cars = {};)然后就没有必要转换为json了。这在你的例子中可能不实用,但对我来说效果很好。

答案 5 :(得分:4)

因为我的数组如下所示: 然后我使用.push函数来动态创建它

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

将数组转换为json的唯一方法是

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

答案 6 :(得分:1)

如果您只有一个对象,例如您提出的对象,则以下内容将起作用。

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

答案 7 :(得分:1)

另一种方式可能是:

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

        var json_string = JSON.stringify(json_arr);

答案 8 :(得分:0)

我知道从整数数组生成有效json的最短方法是

let json = `[${cars}]`

对于更通用的对象/数组(不带circular references),请使用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

答案 9 :(得分:0)

使用你的汽车数组:var cars = [2,3,..]。您可以像这样使用 for 循环

    var carArray = new Array();  

    for(var c in cars) {
      var jsonObj = new Object();
      jsonObj.car_id = cars[c];
      carArray.push(jsonObj);
    }