2012-11-12 45 views
1

我試圖生成谷歌圖表與數據的球衣,但我不知道如何創建一個JSON數組是這樣的:如何產生JSON陣列具有多種類型的運動衫/傑克遜

[ 
    ['Label', 'Value'], 
    ['Memory', 80], 
    ['CPU', 55], 
    ['Network', 68] 
] 

陣列與單一類型(第一行)正在工作,但我不知道如何創建像['內存',80]多種類型的數組。我想球衣沒有與傑克遜,但每次我嘗試生成多個數據類型的ArrayList時候,我得到這樣的:

[ 
    { 
    "type" : "xs:string", 
    "$" : "Memory" 
    }, { 
    "type" : "xs:int", 
    "$" : "80" 
    } 
] 

回答

0

試試這個:

var array = [ 
    { 
    "type" : "xs:string", 
    "$" : "Memory" 
    }, { 
    "type" : "xs:int", 
    "$" : "80" 
    } 
]; 
//the output array 
var translated = []; 
for(var i=0; i<array.length; i+=2){ 
    translated.push([array[i]["$"],array[i+1]["$"]]); 
} 

編輯:如果你需要一個數字而不是字符串

for(var i=0; i<array.length; i+=2){ 
    var value = array[i+1]["$"]; 
    //parse to number 
    if (/^([0-9])*[.]?[0-9]*$/.test(value)){ 
     value = value.parseFloat(value); 
    } 
    translated.push([array[i]["$"],value); 
} 
+0

如果我用你的方法,我得到這個: [ 「標籤」, 「值」],[ 「記憶」, 「80」] [ 「CPU」, 「45」] [「網絡「,」34「]]。 但它必須看起來像這樣才能正確處理谷歌圖表api: [[「標籤」,「值」],[「內存」,80],[「CPU」,45],[「網絡」 34]。 (陣列複製形式螢火蟲輸出) – gofrm

+0

我編輯我的帖子來解析字符串到一個數字,我希望它會有幫助。 –

0

在我們的應用程序中,我們使用了JsonSerializer特性。你可以像你想要的那樣設計你的java對象,而不是讓序列化程序爲你完成剩下的工作。 在那裏你有「完整」的控制如何做到這一點。

看看我們的代碼並添加另一個jgen.writeStartArray() - > jgen.writeEndArray();

public class FolderChildrenSerializer extends JsonSerializer<FolderChildren> { 
    @Override 
    public void serialize(FolderChildren folderchildren, JsonGenerator jgen, 
      SerializerProvider provider) throws IOException, JsonProcessingException { 
     jgen.writeStartArray(); 
     for (Item i : folderchildren.getList()) { 
      jgen.writeObject(i); 
     } 
     jgen.writeEndArray(); 
    } 
}