JSONArray 过滤

24 篇文章 0 订阅
5 篇文章 0 订阅
说明

将一个List ResponseBody到前端页面报错

原因

TProjectXXX实体里面存在OneToMany的属性

解决办法

使用SimplePropertyPreFilter过滤,只留下我需要的字段

/**
 * 第一种:在对象响应字段前加注解,这样生成的json也不包含该字段。
 */
 @JSONField(serialize=false)  
 private String name;  


/**
 * 第二种:在对象对应字段前面加transient,表示该字段不用序列化,即在生成json的时候就不会包含该字段了。
 */
  private transient  String name;  
 

/**
 * 第三种:使用fastjson的拦截器
 */
 PropertyFilter profilter = new PropertyFilter(){  
	   @Override  
	    public boolean apply(Object object, String name, Object value) {  
	        if(name.equalsIgnoreCase("last")){  
	            //false表示last字段将被排除在外  
	            return false;  
	        }  
	        return true;  
	    }  
};  
json = JSON.toJSONString(user, profilter);  
System.out.println(json);   

/**
 * 第四种,直接填写属性
 */
 SimplePropertyPreFilter filter = new SimplePropertyPreFilter(TTown.class, "id","townname");  
 response.getWriter().write(JSONObject.toJSONString(townList,filter));   

附加

  1. @Transient

@Transient表示该属性并非一个到数据库表的字段的映射,ORM框架将忽略该属性;
如果一个属性并非数据库表的字段映射,就务必将其标示为@Transient,否则ORM框架默认其注解为@Basic;

//表示该字段在数据库表中没有

@Transient
public int getAge() {
 return 1+1;
}

Jackson相关:

  1. @JsonIgnoreProperties

此注解是类注解,作用是json序列化时将java bean中的一些属性忽略掉,序列化和反序列化都受影响。

  1. @JsonIgnore

此注解用于属性或者方法上(最好是属性上),作用和上面的@JsonIgnoreProperties一样。

  1. @JsonFormat

此注解用于属性或者方法上(最好是属性上),可以方便的把Date类型直接转化为我们想要的模式,比如@JsonFormat(pattern = “yyyy-MM-dd HH-mm-ss”)

  1. @JsonSerialize

此注解用于属性或者getter方法上,用于在序列化时嵌入我们自定义的代码,比如序列化一个double时在其后面限制两位小数点。

  1. @JsonDeserialize

此注解用于属性或者setter方法上,用于在反序列化时可以嵌入我们自定义的代码,类似于上面的@JsonSerialize

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
JSONArray 去重的方法有多种。其中一种方法是通过双重for循环进行去重。具体步骤如下: 1. 遍历JSONArray中的每个元素。 2. 对于每个元素,再次遍历JSONArray中之前的元素。 3. 检查当前元素是否与之前的元素重复。 4. 如果重复,则将当前元素从JSONArray中移除。 5. 最后得到的JSONArray就是去重后的结果。 另一种方法是利用对象属性名不冲突进行去重。具体步骤如下: 1. 创建一个集合,用于保存已经出现的属性名。 2. 遍历JSONArray中的每个元素。 3. 对于每个元素,获取它的属性名。 4. 检查属性名是否已经存在于集合中。 5. 如果属性名不存在,则将当前元素添加到结果JSONArray中,并将属性名添加到集合中。 6. 最后得到的JSONArray就是去重后的结果。 还有一种方法是根据指定值进行过滤。具体步骤如下: 1. 创建一个空的JSONArray,用于保存去重后的结果。 2. 遍历原始JSONArray中的每个元素。 3. 获取每个元素中的指定值。 4. 检查指定值是否已经在结果JSONArray中存在。 5. 如果指定值不存在,则将当前元素添加到结果JSONArray中。 6. 最后得到的JSONArray就是去重后的结果。 以上是JSONArray去重的几种方法,你可以根据具体情况选择适合的方法来实现去重操作。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *3* [Java JSONArray 去重](https://blog.csdn.net/qq_35461948/article/details/130643293)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *2* [非常实用的5种json数组去重方法,函数实现思路竟是chatgpt帮我写的!](https://blog.csdn.net/u010494753/article/details/129677467)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值