@jsonfield
查看源代码时,它会影响字段和方法。
引用网上说的话,
一.作用域
@jsonfield作用于field时,其name不仅定义输入key的名称,还定义输出的名称。
但是,我在使用中发现,不会像上述那样。
例如
@JSONfield(name='project_id ' ) ) ) )。
私有长项目id
发现bean移动到json时为' project_id':xxx的形式,而json移动到bean时也不会将' project_id':xx的内容设置为projectid中。
快速强森的版本是1.1.15
二、作用于setter和getter方法的该方式在使用中符合预期。
/* *当bean迁移到json时,bean的项目id为项目_ id * /
@JSONfield(name='project_id ' ) ) ) )。
公共长get项目id
返回项目id;
}
/* *当json迁移到bean时,json的project_id值为projectid*/
@JSONfield(name='project_id ' ) ) ) )。
publicvoidsetprojectid (长项目) {
projectid=projectid;
}
三、@jsonfield其他用法,查看@jsonfield注释的源代码,除了name之外,还有format、serialize、deserialize、serialzefeatures、parsefeatures
格式似乎对于在date类型的字段中设置时间格式很有用。
序列化和序列化是布尔型的,使用方法是
@ JSON field (序列=假) ) ) ) ) ) ) ) )。
私有长项目id
序列化时不再包含此字段。 deserialize正好相反。 但是,有需要注意的事情。 查看其他位置,如果字段为final,则注释在字段中不起作用。 这种情况下应该放在get上
或在set方法上。
•serialzefeatures,我用这个属性。 fastjson的默认序列化规则是mddc字段的值为null,它不会向您序列化此字段。 例如,我有这样的需求。
{'fieldname':'project_id ',' operator':'is not ',' value':null}
一个对象这样序列化,我的代码如下
criteriavocriteriavo=newcriteriavo (;
criteria VO.setfield name (project _ id );
CriteriaVO.setoperator(isnot );
CriteriaVO.setvalue(null );
默认情况下,只有以下结果序列化
{'fieldname':'project_id ',' operator':'is not'}
当然,fastjson可以控制序列化规则。
这用于序列化器功能。 这个不胜枚举,有几个值。 具体意思有兴趣的人请知道。
我只是用了其中一个
@ JSON field (serialzefeatures=serializer feature.writemapnullvalue ) )。
私有字符串值;
因此,如果value的值为null,则仍然会序列化该值。 也就是说,如下。 这就是我想要的结果
{'fieldname':'project_id ',' operator':'is not ',' value':null}
发生了另一个问题。 如果字段类型为int类型,则为
私密int start;
隐私限制;
如果我没有set值,它将序列化为
' limit':0,' start':0
默认值均为0,但目标是不设定值就不会出现。
我很容易就把他们的类型改成了integer。 还有其他方法需要通过定制序列化动作来解决,暂时不讨论。
以上关于fastjson的@jsonfield评论中的一些问题(详细信息)是编辑分享给大家的所有内容。 希望能作为参考。 另外,我希望大家多多支持万仟网。
你想和很多网友交流吗?
点击这个留言吧!