将数组转换为JSON

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

请再确认一下:您要发送到页面的数组是 JavaScript 数组还是在服务器上? - Ian Oxley
这是一个Javascript数组,我将把它发送到Python脚本,Python将使用JSON字符串并处理它。 - dotty
https://dev59.com/2nE95IYBdhLWcg3wd9xK#71512964 - mehmet
12个回答

787

5
这个有效,jQuery有类似的函数吗?如果jQuery已经有这样的函数,我宁愿不再附加其他的js文件。 - dotty
1
jQuery在1.4.1中实现了JSON.parse,但没有JSON.stringify...如果你压缩json2.js,它应该小于3k。 - gnarf
6
是的,我也很惊讶 jQuery 没有内置这个功能。 - JonoW
132
对于仍在阅读此答案的任何人,值得指出的是,所有现代浏览器都包含JSON对象作为标准,这意味着除非你打算支持旧版本的浏览器如IE7或Firefox 3.0,否则你不需要这个脚本。请参见CanIUse获取支持情况表。 - Spudley
1
值得一提的是,您可以在浏览器控制台中执行此操作:var a = [paste]; JSON.stringify(a) - Michael Cole
显示剩余5条评论

77
我这样做了:
如果我有:
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);

将纯 JavaScript 数组 pluginArrayArg 转换为 JSON 数组:

var jsonArray = JSON.parse(JSON.stringify(pluginArrayArg))

不需要使用JSON.parse()。 - Timo
https://dev59.com/2nE95IYBdhLWcg3wd9xK#71512964 - mehmet
https://stackoverflow.com/questions/2295496/convert-array-to-json/71512964#71512964 - undefined

62

哇,现在看起来变得更容易了... 你可以用以下三种方式之一:

json = { ...array };

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

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

6
jsonString = JSON.stringify({ ...array }) - Krishna Torque
https://dev59.com/2nE95IYBdhLWcg3wd9xK#71512964 - mehmet

25

2022年回答的;)

如果你想要json 字符串

var JsonString = JSON.stringify(JsArray);

如果你想要 JSON 对象
var JsonObject = JSON.parse(JSON.stringify(JsArray));

更多细节!
使用JSON.stringify(),我们将JavaScript数组转换为Json字符串。然后使用JSON.parse(),我们将Json字符串转换为Json对象。

1
现代答案 - serraosays

14

另一种方法可能是这样:

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

        var json_string = JSON.stringify(json_arr);

1
你代码中的 json_arr 不是一个数组,而是一个对象。 - David

12

我决定使用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了。这在您的示例中可能不实用,但对我很有效。


10
因为我的数组是以下格式: 我使用 .push 函数来动态创建它。
my_array = ["234", "23423"];

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

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

4

最短

要从整数数组生成有效的JSON,请使用以下方法:

let json = `[${cars}]`

如果要处理一般的数组,请使用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


3
如果您只有一个与您所询问的相似的对象,以下方法将适用。
var x = [{'a':'b'}];
var b= JSON.stringify(x);
var c = b.substring(1,b.length-1);
JSON.parse(c); 

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接