我正在尝试将json对象反序列化为java bean。
我面临的主要问题是,我想将json字符串的字段object
视为普通字符串,即使它包含一个可能正确的json对象。
json结构是这样的:
{
"type":"user",
"object":{
"id":"1",
...}
}
我如何告诉gson忽略object
值,以便它不会被反序列化为对象?我希望它只映射到我的bean中的普通String
字段,以便在我从type
字段获取类型后,我可以为它配置正确的反序列化。
答案 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();