1

我正在尝试使用球衣为谷歌图表生成数据,但我不知道如何创建这样的 json 数组:

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

具有单一类型(第一行)的数组正在工作,但我不知道如何创建具有多种类型的数组,例如 ['Memory',80]。我尝试了不带和带杰克逊的球衣,但每次我尝试生成具有多种数据类型的数组列表时,我都会得到这样的结果:

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

2 回答 2

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();
    }
}
于 2012-11-13T08:01:47.570 回答
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);
}
于 2012-11-12T03:19:27.363 回答