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

时间:2016-09-15 17:31:09

标签: 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更改为String of List,现在我得到了:

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

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

2 个答案:

答案 0 :(得分:1)

弄清楚出了什么问题,从而回答了这个问题。 Immutables生成了类GsonAdaptersSampleClass,它实现了TypeAdapterFactory。使用此答案并在此答案的帮助下:https://stackoverflow.com/a/13624060/3192744

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

accRev

答案 1 :(得分:0)

您可以尝试使用GSON库将JSON转换为现有的类对象。

http://howtodoinjava.com/best-practices/google-gson-tutorial-convert-java-object-to-from-json/