我的用例包括一个类似的类,使用不可变(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/