有人知道在反序列化课程时我是否可以让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类似的东西吗?
由于
答案 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代替,也可以为杰克逊做类似事情。