我有一个模型类,我用杰克逊解析。
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)。
任何帮助将不胜感激。谢谢!
答案 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,我们的构造函数将用于反序列化过程。