JSONObject基本内容(二)

摘要:
有时我们会以json格式传输对象。如果一个对象携带一些私人信息,我们需要在传输之前过滤这些信息。

参考内容: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());

免责声明:文章转载自《JSONObject基本内容(二)》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇如何更优雅地切换测试、正式环境?第10章 数据库恢复技术 | 数据库知识点整理下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

java与json互相转换(解决日期问题)

JSON 即 JavaScript Object Natation,它是一种轻量级的数据交换格式,非常适合于服务器与 JavaScript 的交互。本文主要讲解下java和JSON之间的转换,特别是解决互相转换遇到日期问题的情况。 一、需要相关的jar包: json-lib-xxx.jar ezmorph-xxx.jar c...

JAVA框架-前后端分离(Json和ajax)

为什么要前后端分离? 在以前的学习代码中,可以看出来我们在jsp页面页面上也通过EL表达式和jstl写了很多的java程序,这实际上在前端的页面中混入了很多后端的逻辑,这就是传统的web开发。在传统的web开发中,页面展示的内容以及页面之间的跳转逻辑,全都由后台来控制,这导致了前后端耦合度非常高,耦合度高则意味着,扩展性差,维护性差,等等问题 传统开发的问...

Java 嵌套解析 json

1、首先需要安装org.json.jar 2、类JSONObject用于创建一个json对象。其中的JSONObject.put(KEY, VALUE)用于向其中添加条目 3、JSONObject.getString(KEY)则用于从json对象中获取KEY对应的VALUE,且VALUE的类型为String 4、有时候,VALUE又是一个子json对象,此...

在Android里完美实现基站和WIFI定位

来自:http://www.cnblogs.com/coffeegg/archive/2011/10/01/2197129.html 众所周知的,在OPhone和大部分国产的Android定制机里不支持最简单实用的基站和WIFI定位,只能使用速度慢而耗电的GPS定位,但OPhone和华为/中兴生产的一些Android定制机却占据了一定的市场,因此导致了...

接口测试——流量录制回放

接口自动化回归技术是我们经常谈到的一种质量保证手段,如今在测试行业针对它的应用已经比较广泛。对于一个轻量级的系统,当我们想针对它完成一个接口自动化回归工具的时候,我们通常都是通过手动梳理的方法将目前系统应用的对外接口列出来然后,然后查阅接口文档,录入测试用例,最终完成断言,看似是一个完美的解决方案。 但是如果面对磅礴复杂的系统,我们还是采用这样的手段,怕是...

JsonObject判断一个json串中是否含有某个key值

最近在做接口的调试工作,遇到将接收的XML信息转换成JsonObject后,取出某些key不存在的时候出现错误,所以对此方法做一个总结,这里为了方便就以json串来做演示。 import org.json.JSONArray;import org.json.JSONException;import org.json.JSONObject; public s...