fastjson的@JSONField注解
@JSONField 看源码它可以作用于字段和方法上。 引用网上说的, 一、作用Field@JSONField作用在Field时,其name不仅定义了输入key的名称,同时也定义了输出的名称。
@JSONField(serialize=false) private Long ProjectID 就是在序列化的时候就不包含这个字段了。deserialize与之相反。但是有一点需要注意,我看其它地方说,当字段为final的时候注解放在字段上是不起作用的,这时候应该放在get 或set方法上。
{"fieldName":"project_id","operator":"is not","value":null}
一个对象序列化成这样,我的代码如下 CriteriaVO criteriaVO = new CriteriaVO(); criteriaVO.setFieldName("project_id"); criteriaVO.setOperator("is not"); criteriaVO.setValue(null); 默认的它只会序列化为如下结果 当然fastjson还是允许你控制一下序列化的规则的。这就用到了SerializerFeature,这个一个枚举,里面有好几个值 ,具体的含义大家有兴趣的可以了解一下, 我只是用到了其中一个, @JSONField(serialzeFeatures=SerializerFeature.WriteMapNullValue) private String value; 这样当value的值为null的时候,依然会把它的值序列化出来。也就是下面的样子,这就是我想要的结果 又遇到了另一个问题,当字段类型为int类型时,如 private int start; int limit; 我如果不set值的时候,会序列化为下面这样 |