1

jersey を使用して Google チャートのデータを生成しようとしていますが、次のような json 配列を作成する方法がわかりません。

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

単一の型 (1 行目) の配列は機能していますが、['Memory',80] のような複数の型の配列を作成する方法がわかりません。私はジャクソンの有無にかかわらずジャージーを試しましたが、複数のデータ型で配列リストを生成しようとするたびに、次のような結果が得られます:

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

2 に答える 2

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 に答える
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 に答える