@JsonIgnoreProperties 不生效
定義類如下,
import org.codehaus.jackson.annotate.JsonIgnoreProperties;
import org.codehaus.jackson.annotate.JsonProperty;
@JsonIgnoreProperties(ignoreUnknown = true)
public class TenantSpecialLinePo extends TenantLinePo
{
private static final long serialVersionUID = -1356444280247234290L;
private Integer tLineId;
……
}
反序列化
import com.fasterxml.jackson.databind.ObjectMapper;
ObjectMapper objectMapper = new ObjectMapper();
list = objectMapper.readValue(msgObject.getString("data"), TenantSpecialLinePo[].class);
提示錯(cuò)誤:
Unrecognized field "azDeviceId" (class com.huawei.netmonitor.server.entity.tenantSpecilLine.TenantSpecialLinePo), not marked as ignorable
在網(wǎng)上搜索,原來是jackson版本錯(cuò)誤混合使用導(dǎo)致,org.codehaus.jackson.annotate (version 1.x),而ObjectMapper 的版本是com.fasterxml.jackson.databind (version 2.x)
https://stackoverflow.com/questions/20986995/jsonignoreproperties-not-working
仔細(xì)查看之前的代碼,為什么原來代碼沒有報(bào)錯(cuò)
import org.codehaus.jackson.map.ObjectMapper;
TenantSpecialLineResponseBean tenantSpecialLineResponseBean = objectMapper.readValue(in, TenantSpecialLineResponseBean.class);
那么 這兩個(gè)版本用法有什么區(qū)別,參照這里
https://blog.csdn.net/ClementAD/article/details/46416647
原來Jackson fasterxml是Jackson 2.0的新包名,1.x版本現(xiàn)在只提供bug-fix,而2.x版本還在不斷開發(fā)和發(fā)布中。如果是新項(xiàng)目,建議直接用2x,即fasterxml jackson。
補(bǔ)充:
json字符串 反序列化成對(duì)象,除了使用@JsonIgnoreProperties 注解,還可以用下面方法配置:
objectMapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);
總結(jié)
以上是生活随笔為你收集整理的@JsonIgnoreProperties 不生效的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: getitem
- 下一篇: MyBatis框架:延迟加载策策略、一级