首页 > 编程知识 正文

jsonfield注解不生效,fastjson解析多层json

时间:2023-05-03 11:39:46 阅读:15644 作者:1396

@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评论中的一些问题(详细信息)是编辑分享给大家的所有内容。 希望能作为参考。 另外,我希望大家多多支持万仟网。

你想和很多网友交流吗?

点击这个留言吧!

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。