複雑な Java オブジェクトを JSON に変換しようとしています。しかし、私はそうすることができません。Javaジェネリックを使用しています。
これは、ページ出力を格納する汎用オブジェクトです。JsonTest オブジェクト構造を投稿していません。これは、プロパティとセッターとゲッターを持つ通常の Java クラスと同じです。
class ListRow<T>{
private int total;
private int currentRow;
private List<T> test;
public ListRow(int total, int currentRow, List<T> test) {
this.total = total;
this.currentRow = currentRow;
this.test = test;
}
public int getTotal() {
return total;
}
public void setTotal(int total) {
this.total = total;
}
public int getCurrentRow() {
return currentRow;
}
public void setCurrentRow(int currentRow) {
this.currentRow = currentRow;
}
public List<T> getTest() {
return test;
}
public void setTest(List<T> test) {
this.test = test;
}
JsonTest test = new JsonTest("naveen", 20, 20000);
JsonTest test2 = new JsonTest("parveen", 20, 20000);
JsonTest test3 = new JsonTest("pawan", 20, 20000);
JsonTest test4 = new JsonTest("anil", 20, 20000);
List<JsonTest> list = new ArrayList<JsonTest>();
list.add(test);
list.add(test2);
list.add(test3);
list.add(test4);
Gson gson = new Gson();
System.out.print(gson.toJson(list));
この値でこのプログラムを実行すると、正しい出力が得られました。
[{"name":"naveen","age":20,"salary":20000.0},{"name":"parveen","age":20,"salary":20000.0},{"name":"pawan","age":20,"salary":20000.0},{"name":"anil","age":20,"salary":20000.0}]
しかし、Java の汎用機能を実現するために次のコードを作成すると、目的の出力が得られません。
Gson gson = new Gson();
ListRow<JsonTest> dataList = new ListRow<JsonTest>(2, 2, list);
System.out.print(gson.toJson(dataList));
出力は次のとおりです。
{"total":2,"currentRow":2,"test":[{},{},{},{}]}.
このコードの何が問題になっていますか? どうすれば目的の出力を得ることができますか? グリッド用にコードを一度記述してから、任意のオブジェクトを渡してグリッドに表示したいので、汎用機能を使用したいと考えています。
Json テスト ケース:
public static void main(String[] args) {
JsonTest test = new JsonTest("naveen", 20, 20000);
JsonTest test2 = new JsonTest("parveen", 20, 20000);
JsonTest test3 = new JsonTest("pawan", 20, 20000);
JsonTest test4 = new JsonTest("anil", 20, 20000);
List<JsonTest> list = new ArrayList<JsonTest>();
list.add(test);
list.add(test2);
list.add(test3);
list.add(test4);
Gson gson = new Gson();
System.out.print(gson.toJson(list));
ListRow<JsonTest> dataList = new ListRow<JsonTest>(2, 2, list);
System.out.print(gson.toJson(dataList));
}