当启用proguard时,Jackson不会解析所有字段

时间:2014-09-13 01:08:36

标签: java android jackson proguard

我有一个模型类,我用杰克逊解析。

public class MyModel {

   private String x;
   private String y;

   @JsonProperty("zzzz")
   private String z;

   public String getX() { return x; }
   public String getY() { return y; }
   public String getZ() { return z; } 
}

返回的JSON具有键“x”,“y”和“zzzz”。当我在没有启用proguard的情况下运行它时,它完全正常,我能够读取所有三个变量的值。

当我运行proguard时,我只能获得“z”而其他的则为null。

我是否希望为我的所有字段添加JsonProperty(“field_name”),即使密钥名称与字段名称相同?

我正在使用最新的jackson libs(2.4.2)。

任何帮助将不胜感激。谢谢!

1 个答案:

答案 0 :(得分:0)

MyModel是一个不可变的类。必须有一些方法来初始化MyModel的状态。

为了将json反序列化为MyModel对象,应该有一些机制来设置x,y和z的值(或者你需要的任何字段)。

您可以为这些字段提供设置器,也可以使用@JsonProperty(“json_attribue”)来正确设置MyModel对象的这些状态。

我更愿意达到以下目的 -

public class MyModel {

  private String x;
  private String y;
  private String z;

  @JsonCreator
  public MyModel(@JsonProperty("x")String x, @JsonProperty("y")String y, @JsonProperty("zzzz")String z) {
      this.x = x;
      this.y = y;
      this.z = z;
   }

  public String getX() { return x; }
  public String getY() { return y; }
  public String getZ() { return z; }

}

使用@JsonCreator,我们的构造函数将用于反序列化过程。

相关问题