2010-02-19 223 views
296

我有一個Array(var cars = []),它包含幾個整數。 我已經爲數組添加了一些值,但我現在需要通過jQuery的.get方法將此數組發送到頁面。我如何將它轉換爲JSON對象進行發送?將數組轉換爲JSON

+0

只需仔細檢查一下:是要發送到JavaScript數組的頁面還是在服務器上? – 2010-02-19 10:22:12

+0

這是一個Javascript數組,我將把它發送給一個Python腳本,並且Python將使用JSON字符串並使用它。 – dotty 2010-02-19 10:24:16

回答

512

腳本向後兼容性: https://github.com/douglascrockford/JSON-js/blob/master/json2.js

,並呼籲:

var myJsonString = JSON.stringify(yourArray); 

注:現在的JSON對象(以上IE 8 &)的最先進的網絡瀏覽器的一部分。完整列表請參閱caniuse。值得一提的是:@Spudley對他的評論如下

+5

這工作,jQuery是否有這樣的功能?如果jQuery已經有一個函數,我不想附加另一個js文件。 – dotty 2010-02-19 10:27:23

+1

jQuery在1.4.1中有JSON.parse的實現,但不是JSON.stringify ...如果你minifiy json2.js其<3k我認爲。 – gnarf 2010-02-19 10:36:32

+6

是的,我驚訝jQuery沒有這個內置 – JonoW 2010-02-19 10:41:41

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; 
    } 
51

我做了這樣的說法:

,如果我有:

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

或嘗試將數組定義爲對象。 (var cars = {};)然後沒有必要轉換成json。在你的例子中這可能不太實際,但對我來說效果很好。

11

哇,看來它得到了很多時下比較容易... 3種方式就可以做到這一點:

json = { ...array }; 

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

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

在JavaScript中,你可以使用JSON.stringify到一個數組或值轉換成JSON格式化的字符串。

var output = {} 
output[0] = "a"; 
output[1] = "b"; 
output[2] = "c"; 

console.log(JSON.stringify(output)); 
0

如果您只有1個對象,例如您詢問的對象,則以下操作將起作用。

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