【问题标题】:Deserialize a parameterized type with a parameterized member field using Gson使用 Gson 反序列化具有参数化成员字段的参数化类型
【发布时间】:2018-06-20 01:43:50
【问题描述】:

我想使用Google Gson 库来(反)序列化具有参数化成员字段的参数化类型。

类如下所示:

public class Foo<T>{
    List<T> bar;
}

我该怎么做?

我尝试像这样使用TypeToken

Type type = new TypeToken<Foo<String>>() {}.getType();
gson.fromJson<Foo<String>>(json, type);

这会引发IllegalStateException

【问题讨论】:

    标签: java json generics serialization gson


    【解决方案1】:

    这篇文章可能对你有所帮助:Deserializing Generic Types with GSON

    TLDR,我在你的课上试过了,你可以使用这段代码来反序列化 Foo:

    GsonBuilder gson = new GsonBuilder();
    String json = "{\"bar\":[\"thing1\",\"thing2\"]}";
    Foo deserFoo = gson.create().fromJson(json, Foo.class);
    System.out.println(deserFoo.bar);
    

    它输出 [thing1, thing2]

    【讨论】:

    • 谢谢,阅读您的代码让我意识到我得到的错误是由于我的 json 测试字符串中的语法错误。毕竟序列化没有问题。 :facepalm:
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-06-08
    • 1970-01-01
    • 2015-05-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多