【问题标题】:Getting the right JavaType TypeFactory获得正确的 JavaType TypeFactory
【发布时间】:2018-09-12 00:41:18
【问题描述】:

我必须反序列化我的 Java 对象,我不能使用静态引用,即 TypeReference。

喜欢,

mentioned in here

所以,我剩下的是使用类型工厂生成正确的 Javatype,但不知何故我无法正确获取语法。

上述是我的类和接口。

public interface Request {}

public interface Response {}

public class MyRequest implements Request {
int id;

//Getter //Setter
}

public class MyResponse implements Response {
int id;

//Getter //Setter
}

public class UberObject<S extends Request, T extends Response> implements Serializable {
private S request;
private T response;

//Getter//Setter
}

public class UberObjectWithId<S extends Request, T extends Response> extends UberObject<S, T> {
private int id;

//Getter //Setter
}

UberObjectWithId typereferencedObject = 

objectmapperobject.readValue(serialisedUberObjectWithId,

new TypeReference<UberObjectWithId<MyRequest, MyResponse>>() {});

上述方法有效,但由于上述链接中提到的限制,我不能使用 TypeReference。

我尝试使用 Typefactory 检索 JavaType,但无法正确获取语法。

JavaType type = mapper.getTypeFactory().constructParametrizedType(UberObjectWithId.class,
                UberObject.class, Request.class, Response.class);

但调用失败

objectmapperobject.readValue(serialisedUberObjectWithId, type);

如何解决我的特定问题?

【问题讨论】:

    标签: java json objectmapper


    【解决方案1】:

    我通过使用正确的语法来生成 JavaType 来修复它

    JavaType type = mapper.getTypeFactory().constructParametrizedType(UberObjectWithId.class,
                    UberObject.class, MyRequest.class, MyResponse.class);
    

    反序列化时需要具体的类。

    【讨论】:

      猜你喜欢
      • 2019-08-19
      • 1970-01-01
      • 2021-12-25
      • 2014-03-05
      • 2019-10-04
      • 1970-01-01
      • 2022-09-27
      • 2021-03-09
      • 2021-11-29
      相关资源
      最近更新 更多