java bean对象转换json对象时过滤空值


我处理json是用json-lib包。以下是获取数据到输出的步骤

    从数据库中获取javabean数据 创建JsonConfig对象 创建PropertyFilter匿名内部类,并设定规则 把PropertyFilter对象填充到JsonConfig对象中 javabean转换为json 输出json

其中创建PropertyFilter匿名内部类,并设定规则是重中之重,PropertyFilter是一个接口,里面只有一个apply方法,返回值是boolean,返回true时过滤该属性。PropertyFilter源码如下 JsonObject中调用的代码如下 当没有设置JsonPropertyFilter时,跳过该代码段。如果设置了,就调用apply方法,返回false时,跳过该代码段,当apply方法返回true时跳出该循环(即不解析该属性,直接处理下一属性)。

完整代码

@Test
    public void createMenuTest(){
        CustomMenuService customMenuService = (CustomMenuService) context.getBean("customMenuService");
        List<CustomMenuCreate> menus = customMenuService.getCreateMenu();

        //设置过滤json格式
        JsonConfig jsonConfig = new JsonConfig();
        PropertyFilter filter = new PropertyFilter() {
                public boolean apply(Object object, String fieldName, Object fieldValue) {
                if(fieldValue instanceof List){
                    List<Object> list = (List<Object>) fieldValue;
                    if (list.size()==0) {
                        return true;
                    }
                }
                return null == fieldValue || "".equals(fieldValue);
                }
        };
        jsonConfig.setJsonPropertyFilter(filter);

        JSONArray jsonArray = JSONArray.fromObject(menus,jsonConfig);
        JSONObject jsonObject = new JSONObject();
        jsonObject.put("button", jsonArray);

        System.out.println(jsonArray.toString());
    }

经验分享 程序员 微信小程序 职场和发展