Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/323.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何将复杂的Java对象转换为JSON_Java_Json_Gson - Fatal编程技术网

如何将复杂的Java对象转换为JSON

如何将复杂的Java对象转换为JSON,java,json,gson,Java,Json,Gson,我正在尝试将一个复杂的Java对象转换为JSON。但我不能这么做。 我正在使用Java泛型 这是用于存储页面输出的通用对象。我没有发布JsonTest对象结构。它与任何具有属性、setter和getter的普通java类相同 class ListRow<T>{ private int total; private int currentRow; private List<T> test; public ListRow(int total, i

我正在尝试将一个复杂的Java对象转换为JSON。但我不能这么做。 我正在使用Java泛型

这是用于存储页面输出的通用对象。我没有发布JsonTest对象结构。它与任何具有属性、setter和getter的普通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));
但是,当我编写以下代码以实现Java的通用功能时,我没有得到所需的输出:

Gson gson = new Gson();
ListRow<JsonTest> dataList = new ListRow<JsonTest>(2, 2, list);
System.out.print(gson.toJson(dataList));
这个代码怎么了?如何获得所需的输出? 我想使用通用特性,因为我想为网格编写一次代码,然后将任何对象传递到网格中显示

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

}
publicstaticvoidmain(字符串[]args){
JsonTest测试=新的JsonTest(“naveen”,20,20000);
JsonTest test2=新的JsonTest(“parveen”,20,20000);
JsonTest test3=新的JsonTest(“pawan”,20,20000);
JsonTest test4=新的JsonTest(“anil”,20,20000);
列表=新的ArrayList();
列表。添加(测试);
添加(test2);
list.add(test3);
list.add(test4);
Gson Gson=新的Gson();
System.out.print(gson.toJson(list));
ListRow dataList=新的ListRow(2,2,list);
System.out.print(gson.toJson(dataList));
}

添加
TypeToken

Type type = new TypeToken<ListRow<JsonTest>>() {}.getType();
System.out.println(gson.toJson(dataList, type));
输出:

{"total":2,"currentRow":2,"test":[{"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}]}

在浏览器搜索栏中输入“gson”,单击google返回的第一个结果,单击“用户指南”,单击“序列化和反序列化泛型类型”,阅读问题的解决方案。class
JsonTest
在哪里?我已经发布了JsonTest。你能看出来吗?别忘了接受答案,这是说“谢谢”的另一个好方法:
Type type = new TypeToken<ListRow<JsonTest>>() {}.getType();
System.out.println(gson.toJson(dataList, type));
 public static void main(String[] args) {
    Gson gson = new Gson();

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

    ListRow<JsonTest> dataList = new ListRow<JsonTest>(2, 2, list);

    Type type = new TypeToken<ListRow<JsonTest>>() {}.getType();

    System.out.println(gson.toJson(dataList, type));
}
{"total":2,"currentRow":2,"test":[{"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}]}