杰克逊-使用泛型类反序列化

我有一个json字符串,应该将其反序列化为以下类


class Data <T> {

    int found;

    Class<T> hits

}

我该怎么做?这是通常的方式


mapper.readValue(jsonString, Data.class);

但是我怎么提到T代表什么呢?


凤凰求蛊
浏览 373回答 3
3回答

吃鸡游戏

您需要为使用的TypeReference每种通用类型创建一个对象,并将其用于反序列化。例如,mapper.readValue(jsonString, new TypeReference<Data<String>>() {});

繁花不似锦

您不能这样做:您必须指定完全解析的类型,例如Data<MyType>。T只是一个变量,并且毫无意义。但是,如果您想T知道的只是静态的,则需要创建TypeReference动态等效项。引用的其他问题可能已经提到了这一点,但它看起来应该像这样:public Data<T> read(InputStream json, Class<T> contentClass) {&nbsp; &nbsp;JavaType type = mapper.getTypeFactory().constructParametricType(Data.class, contentClass);&nbsp; &nbsp;return mapper.readValue(json, type);}
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java