Gson可以使用类构建器反序列化吗?

时间:2016-08-04 18:09:11

标签: java jackson gson builder

有人知道在反序列化课程时我是否可以让Gson使用我的类构建器和构造函数?

我知道我可以和杰克逊一起使用建筑师,如下所示:

@JsonDeserialize( builder = MyClass.MyClassBuilder.class )
@Builder
@Value
public class MyClass
{
    @NonNull
    private final String myValue;

    @JsonPOJOBuilder( withPrefix = "" )
    public static final class MyClassBuilder{}
}

我可以使用与Gson @JsonPOJOBuilder类似的东西吗?

由于

1 个答案:

答案 0 :(得分:0)

对于这样的情况,您可能希望write a custom deserializer解析JSON并调用您的构建器。如果您的构建器是带有具体字段的POJO,您可以改为调用.fromJson(json, Builder.class),然后从中构建MyClass实例,但我认为这不会起作用。

一般来说,这似乎不是一个使用Gson(或杰克逊,你的选择)的好地方。 Gson的目的是使用Java类结构来表示JSON模式,然后支持在两者之间轻松转换。你可以按摩Gson来支持像这样的其他用例,但好处变得不那么清楚了。就个人而言,我只想创建一个POJO来编码你试图解析并从那里开始的模式,而不是花时间让Jackson和Gson一起玩得很好。

那说一般解决方案也是可能的。快速搜索为Gson adapter发现AutoValue,因此您可以使用AutoValue代替,也可以为杰克逊做类似事情。