首页 文章

将数组转换为JSON

提问于
浏览
339

我有一个数组( var cars = [] ),它包含一些整数 . 我've added a few values to the array, but I now need to send this array to a page via jQuery' s .get 方法 . 如何将其转换为JSON对象以进行发送?

6 回答

  • 59

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

    并致电:

    var myJsonString = JSON.stringify(yourArray);
    

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

  • 11

    我这样做了:

    如果我有:

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

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

    json = { ...array };
    
    json = Object.assign({}, array);
    
    json = array.reduce((json, value, key) => { json[key] = value; return json; }, {});
    
  • 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;
       }
    
  • 25

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

  • 580

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

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

相关问题