• JSONObject基本内容(二)


    参考内容:http://swiftlet.net/archives/category/json  十分感谢!!!

    这部分的内容主要是讲述 javaBean转换为JSONObect时,如果有些属性不需要转换,那么该如何操作。

    过滤属性在什么时候会用到呢?

    有时候我们会把对象以json格式传送,如果一个对象携带着一些私人信息,那么我们就要先把这些信息过滤掉,再进行传输了。

    一)方法一:实现JSONString接口,实现toJSONString方法

    那么我们现在写一个Person类,实现这个JSONString接口

    public class Person implements JSONString{
        private String name;
        private String address;
        private String sex;
        
        @Override
        public String toJSONString() {
            //{"name" : "name" , "sex" : "sex"},这里省略了address属性,因为我们要把它过滤掉
            return "{"name":"" + name + "","sex":"" + sex + ""}";
        }
        
        public String getName() {
            return name;
        }
        public void setName(String name) {
            this.name = name;
        }
        public String getAddress() {
            return address;
        }
        public void setAddress(String address) {
            this.address = address;
        }
        public String getSex() {
            return sex;
        }
        public void setSex(String sex) {
            this.sex = sex;
        }
        
    }

    然后就写相应的测试

        public static void main(String[] args) {
            /**
             * 转换为json对象时,排除掉person中address属性的三种方法
             */        
            System.out.println("方法一:Person类实现JSONString接口,实现toJSONString方法");
            
            Person person = new Person();
            person.setName("Rime");
            person.setSex("men");
            person.setAddress("china");
            JSONObject json = JSONObject.fromObject(person);
            System.out.println(json.toString());    
    }

    输出结果:   

    方法一:Person类实现JSONString接口,实现toJSONString方法
    {"name":"Rime","sex":"men"}

    二)方法二:在jsonConfig中配置excludes

    由于Person类已经使用了方法一,具有侵入性,我们再建一个类Person2

    public class Person2 {
        private String name;
        private String address;
        private String sex;
        public String getName() {
            return name;
        }
        public void setName(String name) {
            this.name = name;
        }
        public String getAddress() {
            return address;
        }
        public void setAddress(String address) {
            this.address = address;
        }
        public String getSex() {
            return sex;
        }
        public void setSex(String sex) {
            this.sex = sex;
        }
    }

    然后过滤操作如下:

            Person2 person2 = new Person2();
            person2.setName("Rime2");
            person2.setSex("men");
            person2.setAddress("china");
            JsonConfig jsonConfig = new JsonConfig();
            jsonConfig.setExcludes(new String[] {"address"});//排除掉address属性
            JSONObject json2 = JSONObject.fromObject(person2,jsonConfig);
            System.out.println(json2.toString());

    三)方法三:在jsonConfig中配置过滤器,把属性过滤掉

    过滤操作如下:

            Person2 person3 = new Person2();
            person3.setName("Rime3");
            person3.setSex("men");
            person3.setAddress("china");
            JsonConfig jsonConfig2 = new JsonConfig();
            //配置过滤器
            jsonConfig2.setJsonPropertyFilter(new PropertyFilter() {            
                @Override
                public boolean apply(Object source, String name, Object value) {
                    //source:对象类型
                    //name:属性名
                    //value:属性值
                    //可根据以上三种组合来过滤
                    //Person2类型的address属性过滤掉
                    return source instanceof Person2 && name.equals("address");
                }
            });
            JSONObject json3 = JSONObject.fromObject(person3,jsonConfig2);
            System.out.println(json3.toString());
  • 相关阅读:
    一些话
    把视频文件拆成图片保存在沙盒中
    相册视频保存进沙盒
    数据库
    C 计算数组长度
    iOS之与JS交互通信
    iOS之duplicate symbols for architecture x86_64错误
    iOS之隐藏状态栏
    iOS之开发程序之间的跳转及跳转到appStore
    iOS之常用的判NULL的方法
  • 原文地址:https://www.cnblogs.com/vmax-tam/p/4624869.html
Copyright © 2020-2023  润新知