9
之前旧版的fastjson升级到最新的1.2.58后VO中的_id字段和id字段是我们业务的两个不同字段,现fastjson默认逻辑会将_id赋值映射给了id字段,导致一堆缺陷,fastjson开发人员请尽快将此问题处理下,市面那么多json框架jackson、gson都没有这种逻辑,为啥fastjson搞这种奇怪的逻辑。
之前旧版的fastjson升级到最新的1.2.58后VO中的_id字段和id字段是我们业务的两个不同字段,现fastjson默认逻辑会将_id赋值映射给了id字段,导致一堆缺陷,fastjson开发人员请尽快将此问题处理下,市面那么多json框架jackson、gson都没有这种逻辑,为啥fastjson搞这种奇怪的逻辑。
请提供一下VO的类结构
如: String str = "{id:"aa",_id:"bbb"}"; PersonVO p = JSON.parseObject(str,PersonVO.class); System.out.println(p.getId()); 打印出的结果是"bbb"而不是"aa",我怀疑是你们的智能匹配功能导致的,设置了禁用智能匹配功能也没效果!
public class PersonVO {
private String id;
private String _id;
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String get_id() {
return _id;
}
public void set_id(String _id) {
this._id = _id;
}
}
fast rubish
看起来更像是把 id 和 _id 认成了同一个属性。
VO vo = JSON.parseObject("{_id:2, id:1}", VO.class);
logger.info("vo={}", vo.toString()); // vo=VO{id=0, _id=2}
VO vo2 = JSON.parseObject("{id:2, _id:1}", VO.class);
logger.info("vo2={}", vo2.toString()); // vo=VO{id=0, _id=2}
遇到同样的问题。 fastjson解析 _id的时候 需要在属性的setter和getter方法上使用注解@JSONField(name="_id"),为其指定要序列化和反序列化后的属性名,否则就是泪