将数组转换为JSON

dot*_*tty 368 javascript arrays jquery json

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

Jon*_*noW 632

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

并致电:

var myJsonString = JSON.stringify(yourArray);
Run Code Online (Sandbox Code Playgroud)

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

  • 对于仍在阅读这个答案的人来说,值得指出的是,所有现代浏览器都包含`JSON`对象作为标准,这意味着**你不需要这个脚本**,除非你计划支持像IE7这样的旧浏览器或Firefox 3.0.有关支持图表,请参见[CanIUse](http://caniuse.com/json). (119认同)
  • 是的,我很惊讶jQuery也没有这个内置 (6认同)
  • 这有效,jQuery有这样的功能吗?如果jQuery已经有一个函数,我宁愿不附加另一个js文件. (5认同)

小智 65

我这样做了:

如果我有:

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);
Run Code Online (Sandbox Code Playgroud)

将pluginArrayArg(纯javascript数组)转换为JSON数组:

var jsonArray = JSON.parse(JSON.stringify(pluginArrayArg))
Run Code Online (Sandbox Code Playgroud)


小智 37

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

json = { ...array };

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

json = array.reduce((json, value, key) => { json[key] = value; return json; }, {});
Run Code Online (Sandbox Code Playgroud)

  • `jsonString = JSON.stringify({ ...array })` (3认同)

meh*_*met 25

你想要什么 ?

如果你想要 json 字符串

var JsonString = JSON.stringify(JsArray);
Run Code Online (Sandbox Code Playgroud)

如果你想要 json对象

var JsonObject = JSON.parse(JSON.stringify(JsArray));
Run Code Online (Sandbox Code Playgroud)

更多细节!

使用JSON.stringify(),我们将 JavaScript 数组转换为 Json 字符串。并使用JSON.parse(),我们将 Json 字符串转换为 Json 对象。


Pau*_*oso 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;
   }
Run Code Online (Sandbox Code Playgroud)


Fra*_*ian 11

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


har*_*are 8

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

my_array = ["234", "23423"];
Run Code Online (Sandbox Code Playgroud)

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

json = Object.assign({}, my_array);
Run Code Online (Sandbox Code Playgroud)


小智 6

另一种方式可能是这样的:

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

        var json_string = JSON.stringify(json_arr);
Run Code Online (Sandbox Code Playgroud)