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

mox*_*601 9 java gson deserialization

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

{
    "type":"user",
    "object":{
        "id":"1", 
        ...}
}
Run Code Online (Sandbox Code Playgroud)

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

GaR*_*eTa 11

只需将其声明为JsonObject类型

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

    @SerializedName("object")
    public JsonObject object;
}
Run Code Online (Sandbox Code Playgroud)


Joa*_*oao 1

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

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

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

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

Gson gson = new GsonBuilder().registerTypeAdapter(JavaBeanObject.class, new JavaBeanDeserializer()).create();
Run Code Online (Sandbox Code Playgroud)