使用gson将json字段反序列化为纯字符串

时间:2011-03-21 12:28:55

标签: java gson deserialization

我正在尝试将json对象反序列化为java bean。 我面临的主要问题是,我想将json字符串的字段object视为普通字符串,即使它包含一个可能正确的json对象。 json结构是这样的:

{
    "type":"user",
    "object":{
        "id":"1", 
        ...}
}

我如何告诉gson忽略object值,以便它不会被反序列化为对象?我希望它只映射到我的bean中的普通String字段,以便在我从type字段获取类型后,我可以为它配置正确的反序列化。

2 个答案:

答案 0 :(得分:11)

只需将其声明为JsonObject类型

class ExampleJsonModel {
    @SerializedName("type")
    public String type;

    @SerializedName("object")
    public JsonObject object;
}

答案 1 :(得分:1)

我不知道您的问题是否已解决。我遇到了一个类似的问题,这就是我如何解决的问题:

JsonDeserializer 允许您制作自己的适配器来反序列化**:

class JavaBeanDeserializer implements JsonDeserializer<JavaBeanObject>() {
    public JavaBeanObject fromJson(JsonElement json, Type typeOfT, JsonDeserializationContext context) throws JsonParseException {
    // return JavaBeanObject built using your logic.
}

在构建Gson对象时,您必须将 JavaBeanDeserializer 注册到Gson对象:

Gson gson = new GsonBuilder().registerTypeAdapter(JavaBeanObject.class, new JavaBeanDeserializer()).create();