10

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

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

我如何告诉 gson 忽略该object值,以便它不会反序列化为对象?我希望它只映射到String我的 bean 中的一个普通字段,以便在我从字段中获取类型后,我可以为它处理适当的反序列化type

4

2 回答 2

12

只需将其声明为 JsonObject 类型

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

    @SerializedName("object")
    public JsonObject object;
}
于 2014-05-28T18:30:02.333 回答
1

不知道你的问题是否解决了。我遇到了一个类似的问题,这就是我的解决方法:

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

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

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

Gson gson = new GsonBuilder().registerTypeAdapter(JavaBeanObject.class, new JavaBeanDeserializer()).create();
于 2011-04-12T07:28:54.850 回答