【发布时间】:2015-11-20 13:26:09
【问题描述】:
我有以下方法,我正在尝试将其与一个通用类一起使用:
public static <T> T fromJson(String serializedJson, Class<T> theClazz);
我想反序列化一个如下所示的类:
public class JsonContentWrapper<T> {
private String version;
private T content;
}
我通常使用fromJson 方法的方式如下:
JsonUtil.fromJson(someJsonString, JsonContentWrapper.class)
但是,由于 JsonContentWrapper 具有通用对象 content,我真的很想能够这样做:
JsonUtil.fromJson(someJsonString, JsonContentWrapper<SomeClass>.class)
但这不起作用。有没有办法获得一个泛型类和它正在使用的泛型?我尝试过类似this 的方法,但运气不佳。
就目前而言,至少对于我正在测试的对象而言,T 对象正在反序列化为 LinkedHashMap,这是错误的。
【问题讨论】:
-
因为我确信必须有另一种方法来解决这个问题,也许有人可以帮助解决这个问题。我不需要它来确定我的泛型是什么,我可以告诉它:“将其反序列化为这种类型,其中 T 是这个”
-
您可以尝试在
JsonContentWrapperClass-private Class<T> contentClass中添加另一个字段。这样,您将在运行时拥有特定的类,并且可以使用它来相应地解析内容。不过,不确定它是否适用于您的情况。 -
你可能想看看 gson 和它的
TypeToken可以像Map<String, String> map2 = gson.fromJson(json, new TypeToken<Map<String, String>>() {}.getType());一样使用
标签: java