java - 对于包含使用 Immutables 生成的列表的 Java 类,如何从 json 字符串获取对象?

标签 java json gson

我的用例包括一个类似的类,使用不可变(https://immutables.github.io/):

@Value.Immutable
@Gson.TypeAdapters
public abstract class SampleClass {
    public abstract String var1();
    public abstract String var2();
    public abstract Date date1();
}

我使用 gson 将其转换为 Json 字符串,然后使用以下命令再次获取对象:

SampleClass obj1 = new Gson().fromJson("generated_json_string",ImmutableSampleClass.class);

但现在我必须将 var1 更改为字符串列表,现在我得到:

java.lang.RuntimeException: Failed to invoke com.google.common.collect.ImmutableList() with no args

从 JSON 字符串获取对象的正确方法是什么?

最佳答案

找出问题所在,因此回答问题。 Immutables 生成类 GsonAdaptersSampleClass,它实现了 TypeAdapterFactory。使用这个并在这个答案的帮助下:https://stackoverflow.com/a/13624060/3192744

我可以找到以下正确的方法来反序列化 JSON 字符串:

GsonBuilder gsonBuilder = new GsonBuilder();
gsonBuilder.registerTypeAdapterFactory(new GsonAdaptersSampleClass());
Gson gson = gsonBuilder.create();
SampleClass obj1 = gson.fromJson("generated_json_string",ImmutableSampleClass.class);

关于java - 对于包含使用 Immutables 生成的列表的 Java 类,如何从 json 字符串获取对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39517065/

相关文章:

java - 阻止冒泡排序对列表中的空白项进行排序

java - 如何解压并且解压时不创建子目录

java - 是 equals() 和 toHashCode 影响 vector add() remove() 方法的行为

ios - JSONSerialization可与iOS模拟器一起使用,但在使用手机时出现错误“对下标的含糊使用”

java - 从 json 文件中读取多个元素

java - OkHttp:一个简单的 GET 请求:response.body().string() 返回 json 内不可读的转义 unicode 符号无法转换为 gson

java - 未删除子对象

IOS JSON 解析嵌套数据

java - 如何向创建的 GSON 添加属性到 JSON?

java - 吗啡和 gson 混合用于 mongodb