1

我正在使用 Immutables,并且我将生成的类配置为通过构造函数进行实例化。

@Gson.TypeAdapters
@Value.Immutable(builder = false)
@Value.Style(
        of = "new",
        allParameters = true,
        get = {"get*", "is*"})
public interface MyClass {
  String getX();
  boolean isGreen();
}

然而,现在实例被序列化为https://immutables.github.io/json.html#tuples-of-constructor-arguments中指定的元组

    ["someValueOfX", true]

相反,我需要与使用 builder 而不是构造函数时相同的序列化

    {
      "x" : "someValueOfX",
      "green" : true
    }

是否可以禁用序列化为元组?

4

1 回答 1

1

看起来格式切换是您使用builder=false- 从链接获得的有意副作用:

为了将对象编组为元组,您需要注释构造函数参数并禁用生成器

我同意将构建器的存在与序列化格式结合起来很尴尬,但似乎这是唯一的方法......所以获得所需序列化格式的最佳方法就是删除builder=false.

于 2019-02-22T23:20:58.750 回答