将数组转换为JSON

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

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

和电话:

var myJsonString = JSON.stringify(yourArray);

注意: JSON对象现在是大多数现代web浏览器的一部分(IE 8 &如上图所示)。参见caniuse查看完整列表。感谢@Spudley在下面的评论

我决定使用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;
}

我是这样做的:

如果我有:

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

或者尝试将数组定义为对象。(var cars = {};)那么就不需要转换成json了。这在你的例子中可能不实用,但对我来说很管用。

哇,现在似乎容易多了……3种方法:

json = { ...array };


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


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

如果你只有一个像你问的对象,下面的工作。

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

另一种方式是:

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


var json_string = JSON.stringify(json_arr);

最短的

从整数数组生成有效的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

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

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

我把数组转换成json的唯一方法是

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

用你的汽车数组: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);
}
    

您可以使用Object将数组转换为JSON。分配功能。我遇到的主要问题是Javascript数组有一个从零开始的整数键,这反过来允许访问数组中的数据。

let fruits = ['Apple', 'Banana']
document.write(fruits[0])

返回:

苹果

当您将数组转换为JSON时,您将得到

{"0": "Apple", "1: "Banana"}

相反,JSON对象通常包含任意键,例如:

< p > { “some_key”:“some value”; “other_key”:“some other value”; } < / p >

幸运的是,您可以创建一个项目列表,它的工作原理与数组差不多,然后使用Object。就像它是一个数组一样赋值,然后将输出转换为JSON对象

var items = {};
items["some_key"]="some value";
items["other_key"]="some other value";
const jsonString = JSON.stringify(Object.assign({}, items))
const json_obj = JSON.parse(jsonString);

使用项目列表的好处是,你不必将JSON数据作为字符串或引号、逗号等来处理……相反,您可以只管理项目对象填充数据或删除数据。完成后,只需将项目变量转换为JSON对象,并对其进行所需的操作。

答案在2022年

我认为这是最好最干净的答案。

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

var JsonObject, jsArray;


// JS array
jsArray = ["one", "two", "three"];


// Convert (js array) to (json object)
JsonObject = JSON.parse(JSON.stringify(jsArray));


// type
console.log(typeof(JsonObject));


// JsonObject
console.log(JsonObject);