博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
【fastJSON】利用fastJSON处理循环引用的问题
阅读量:7287 次
发布时间:2019-06-30

本文共 2400 字,大约阅读时间需要 8 分钟。

下载fastJSON jar   com.alibaba.fastjson

 

第一种:【写死的】

将需要序列化的字段传递进去,得到结果

//需要序列化的实体+字段        SimplePropertyPreFilter filter = new SimplePropertyPreFilter(Member.class,"字段1","字段2","可变字符串数组" );        String result = JSON.toJSONString(Member.class, filter);

 

第二种:【可以复用灵活】

Map保存类对象+此对象所有的字段

传进来需要阻隔的字段

 

 

package net.shopxx.ws.utils;import java.lang.reflect.Field;import java.util.Arrays;import java.util.HashMap;import java.util.Map;import com.alibaba.fastjson.serializer.PropertyFilter;public class JSONExUtils implements PropertyFilter {        //需要处理序列化阻隔的实体+实体所有的字段    private Map
, String[]> excludes = new HashMap
, String[]>(); /** * apply 方法 返回true表示需要序列化 * 参数2 不需要序列化的字段【属性】 * 参数3 实体 */ @Override public boolean apply(Object object, String paramerter, Object entity) { //对象为NULL 直接放行 if(entity == null){ return true; } //获取需要序列化的 类对象 Class
clazz = entity.getClass(); //查找不需要序列化的字段 for (Map.Entry
, String[]> exItem : this.excludes.entrySet()) { // isAssignableFrom() 用来判断类型间是否有继承关系 if(exItem.getKey().isAssignableFrom(clazz)){ //不需要序列化的字段包含在所有字段中 下标>1 返回false return -1 != Arrays.binarySearch(exItem.getValue(), paramerter); } } return true; } public void setExcludes(Class
cls, String...properties) { excludes.put(cls, properties); } public Map
, String[]> getExcludes() { return excludes; } public void setExcludes(Map
, String[]> excludes) { this.excludes = excludes; } //获取本对象所有的属性 暂时没用 public String[] just4Paramerters(Class
object){ Field[] fields = object.getDeclaredFields(); StringBuffer buffer = new StringBuffer(); for (Field field : fields) { buffer.append(field.getName()+","); } if(buffer.length() > 0){ String[] paramerters = buffer.toString().split(","); return paramerters; } return null; } }

 

 

然后在需要使用的地方 调用即可!!

public void testName(){        JSONExUtils exUtils = new JSONExUtils();        exUtils.setExcludes(Member.class, new String[]{"需要阻隔的字段"});        String result = JSON.toJSONString("", exUtils);    }

 

转载地址:http://stpjm.baihongyu.com/

你可能感兴趣的文章
云计算培训论云计算下的网络安全及措施
查看>>
users表空间在线损坏(不通过RMAN恢复)
查看>>
我在51cto第一篇博客
查看>>
TCP三次握手 和四次挥手
查看>>
基于本地配置文件的vsftpd
查看>>
MFC 对话框添加背景图片
查看>>
javascript中的void运算符语法及使用介绍
查看>>
《从零开始学Swift》学习笔记(Day 18)——有几个分支语句?
查看>>
类-Class
查看>>
T-SQL 优化
查看>>
System Center2012综述
查看>>
zabbix proxy搭建及应用proxy监控腾讯CVM服务器
查看>>
面向对象
查看>>
SQL语法2
查看>>
grub应用
查看>>
test
查看>>
linux配置Yum源
查看>>
So what, So TM what?
查看>>
我的友情链接
查看>>
动画编辑器的使用
查看>>