GSON反序列化包含根值的POJO

时间:2015-11-18 10:49:12

标签: json gson json-deserialization

我想实现与此相反的方式: Gson serialize POJO with root value included?

我得到一个JSON字符串

{"RootDTO":{"classField_01":"value"}}

并希望将其反序列化为

class RootDTO {
    String classField_01;
    //nice getter and setter are included
}

我知道如何设置参数,以便在序列化中将根元素包含在JSON字符串中。 但是现在如何反序化呢?像地狱一样搜索但无法找到合适的答案。

感谢您的任何想法!

1 个答案:

答案 0 :(得分:0)

制作RootDTO.java

import com.google.gson.annotations.SerializedName;

public class RootDTO {

    @SerializedName("classField_01")
    private String classField_01;

    public String getClassField_01() {
        return classField_01;
    }

    public void setClassField_01(String classField_01) {
        this.classField_01 = classField_01;
    }
}

制作Response.java

import com.google.gson.annotations.SerializedName;

public class Response {

    @SerializedName("RootDTO")
    private RootDTO rootDTO;

    public RootDTO getRootDTO() {
        return rootDTO;
    }

    public void setRootDTO(RootDTO rootDTO) {
        this.rootDTO = rootDTO;
    }
}

测试此代码以生成您的json数据

import com.google.gson.Gson;

public class TestOne {
    public static void main(String[] args) {

        RootDTO dto = new RootDTO();
        dto.setClassField_01("value");
        Response response = new Response();
        response.setRootDTO(dto);

        String result = (new Gson()).toJson(response);
        System.out.println(""+result);
    }
}

使用此代码生成的输出

{"RootDTO":{"classField_01":"value"}}