fastjson去掉关联属性或者保留想要的属性的方法!!地表最强FastJson!

42 篇文章 0 订阅

方法一:在对象属性上添加注解

@JSONField(serialize=false)//转换成json的时候去除subareas属性
private Set subareas = new HashSet(0);

方法二:使用参数过滤器

//方法二:通过fastjson的参数过滤器将任何一个bean对象的内容转换成json字符串并返回到前台
	public void bean2Json2Front2(Object object) {
		//通过匿名内部类创建参数过滤器
		//name为对象中的属性名!!,返回false表示转成json的时候过滤掉该属性名
		PropertyFilter filter=new PropertyFilter() {
			@Override
			public boolean apply(Object source, String name, Object value) {
				if(name.equals("roles")||name.equals("parentFunction")) {
					return false;
				}
				return true;
			}
		};
		//下面四行是常规步骤
		SerializeWriter sw = new SerializeWriter();  
        JSONSerializer serializer = new JSONSerializer(sw);  
        serializer.getPropertyFilters().add(filter);  
        serializer.write(object);  
        //转换成json
        String json=sw.toString();
        //将json数据返回到浏览器
        //设置返回内容的类型为json格式,很重要!!!不设置的话可能得不到你想要的结果!!
  		ServletActionContext.getResponse().setContentType("application/json;charset=utf-8");
        try {
        	//写到前台
			ServletActionContext.getResponse().getWriter().write(json);
		} catch (IOException e) {
			e.printStackTrace();
		} 
	}

方法三:使用简单参数过滤器保留指定的参数

//方法三:通过简单参数过滤器(保留的方法),将任何一个bean对象的内容转换成json字符串并返回到前台
	public void bean2Json2Front3(Object object) {
		//参数1:被转换对象的字节码对象(可以省略);参数2...后面都是可变参数,表示你想要保留!!的参数
		SimplePropertyPreFilter filter=new SimplePropertyPreFilter(Object.class,"id","text","children");
		//转成json
		String json = JSON.toJSONString(object, filter);
		//将json数据返回到浏览器
		ServletActionContext.getResponse().setContentType("application/json;charset=utf-8");
	    try {
			ServletActionContext.getResponse().getWriter().write(json);
		} catch (IOException e) {
			
			e.printStackTrace();
		} 
	}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值