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

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

@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();
		} 
	}

猜你喜欢

转载自blog.csdn.net/Topdandan/article/details/80499013