jackson json转bean忽略没有的字段 not marked as ignorable
@JsonIgnore注解用来忽略某些字段,可以用在Field或者Getter方法上,用在Setter方法时,和Filed效果一样。这个注解只能用在POJO存在的字段要忽略的情况,不能满足现在需要的情况。
@JsonIgnoreProperties(ignoreUnknown = true),将这个注解写在类上之后,就会忽略类中不存在的字段,可以满足当前的需要。这个注解还可以指定要忽略的字段。使用方法如下:
@JsonIgnoreProperties({ "internalId", "secretKey" })
指定的字段不会被序列化和反序列化。
===========
代码会返回tes对象为null
public class tes {</span><span style="color: #0000ff;">private</span><span style="color: #000000;"> String a; </span><span style="color: #0000ff;">private</span><span style="color: #000000;"> String b; </span><span style="color: #0000ff;">public</span><span style="color: #000000;"> String getA() { </span><span style="color: #0000ff;">return</span><span style="color: #000000;"> a; } </span><span style="color: #0000ff;">public</span> <span style="color: #0000ff;">void</span><span style="color: #000000;"> setA(String a) { </span><span style="color: #0000ff;">this</span>.a =<span style="color: #000000;"> a; } </span><span style="color: #0000ff;">public</span><span style="color: #000000;"> String getB() { </span><span style="color: #0000ff;">return</span><span style="color: #000000;"> b; } </span><span style="color: #0000ff;">public</span> <span style="color: #0000ff;">void</span><span style="color: #000000;"> setB(String b) { </span><span style="color: #0000ff;">this</span>.b =<span style="color: #000000;"> b; } </span><span style="color: #0000ff;">public</span> <span style="color: #0000ff;">static</span> <span style="color: #0000ff;">void</span><span style="color: #000000;"> main(String[] args) { String ss</span>="{\"a\":\"aa\",\"c\":\"c\"}"<span style="color: #000000;">; tes t</span>= JsonUtil.fromJson(ss,tes.<span style="color: #0000ff;">class</span><span style="color: #000000;">); </span><span style="color: #008000;">//</span><span style="color: #008000;"> tes t= new Gson().fromJson(ss,tes.class);</span>
}
}
解决方案:
1 2 3 4 5 6 7 8 | 正确在 class 上加 @JsonIgnoreProperties(ignoreUnknown = true ) public class tes 或者代码控制 ObjectMapper objectMapper = new ObjectMapper(); objectMapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false ); objectMapper.readValue(json,cls); |