参考内容: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基本内容(二)的更多相关文章

  1. JSONObject基本内容(三)

    参考资料:http://swiftlet.net/archives/category/json    十分感谢!!!~~ 第三篇的内容,主要讲述的有两点: 1 .如何获取JSONObject中对应ke ...

  2. JSONObject基本内容(一)

    参考资料:http://swiftlet.net/archives/category/json,十分感谢~ 平时做项目,难免有遇到使用json对象的时候,这个东西不难,但是一不使用久了,就会忘记,所以 ...

  3. CSS样式表及选择器相关内容(二)-伪类与伪元素选择器

    伪类与伪元素选择器归纳: 一.伪类选择器(伪类以":"开头,用在选择器后,用于指明元素在某种特殊的状态下才能被选中)    1.a标签伪类选择器,其他标签类似        eg: ...

  4. scala高级内容(二) - Implicit

    一. Implicit关键字 隐士转换 (1)隐士转换函数:用implicit修饰的,只有一个参数的函数.他会被自动执行,来把一个值转换成另一个 class RichFile(val f:File){ ...

  5. OpenXml读取word内容(二)

    注意事项 上一篇已经说明,这次就不一一说了,直接来正文: word内容 相关代码 方法1 static void Main(string[] args) { string wordPathStr = ...

  6. HTML5基础内容(二)

    HTML(HyperText Markup Language)超文本标记语言 一.HTML注释 元素就是标签,标签就是元素. 注释中的内容不会在页面中显示,但是可以在源码中看到. 可以通过编写注释来对 ...

  7. 微信公众号 扫码支付 模式二 demo

    扫码支付 本文附有代码,在下方,如果不熟悉场景的可以看看下面的场景介绍 场景介绍 官网介绍地址:https://pay.weixin.qq.com/wiki/doc/api/native.php?ch ...

  8. JSONObject 自定义过滤配置

    一.自定义过滤器说明 PropertyPreFilter 根据PropertyName判断是否序列化  PropertyFilter 根据PropertyName和PropertyValue来判断是否 ...

  9. 动态生成二维码插件 jquery.qrcode.js

    前段时间做项目,需要动态生成一个二维码,于是就在网上找了一下发现一个jquery插件jquery.qrcode.js,所以今天就简单说一下这个插件的使用: jquery.qrcode.js是依赖jqu ...

随机推荐

  1. dump_stack的简单使用 【转】

    转自:http://blog.chinaunix.net/uid-26403844-id-3361770.html http://blog.csdn.net/ryfjx6/article/detail ...

  2. 企业环境下的OpenStack自动化功能测试(转载)

    原文地址:http://mp.weixin.qq.com/s?__biz=MzAxOTAzMDEwMA==&mid=2652502581&idx=1&sn=0c26519bcb ...

  3. 生成ansible-playbook的yaml文件的代码(字典排序问题无法解决)

    import yaml import collections def add_task(): return None def add_vars(): return None def add_handl ...

  4. HDU 3579

    标准同余方程组,只是在求出值后如果为0,应该输出Mi的Lcm: #include<iostream> #include<cstdio> #include<cstring& ...

  5. 笔记 oracle 创建联合主键

    笔记 alter table tablename add constraint unionkeyname primary key (column1,column2); 上面语句中: tablename ...

  6. eclipse安装主题插件(Color Theme)

    点击“Help”--> Install New Software Name:ColorThemeLocation:http://eclipse-color-theme.github.io/upd ...

  7. python接口自动化测试十四: 用正则表达式提取数据

    import requests import re url = 'xxxx' r = requests.post(url) # 正则公式: postid = re.findall(r"(.+ ...

  8. SpringMVC MongoDB之“基本文档查询(Query、BasicQuery)”

    一.简介 spring Data  MongoDB提供了org.springframework.data.mongodb.core.MongoTemplate对MongoDB的CRUD的操作,上一篇我 ...

  9. 《转》理解restful

    越来越多的人开始意识到,网站即软件,而且是一种新型的软件. 这种"互联网软件"采用客户端/服务器模式,建立在分布式体系上,通过互联网通信,具有高延时(high latency).高 ...

  10. bootstrap 全局样式设置

    HTML <!DOCTYPE HTML> <html> <head> <meta http-equiv="Content-Type" co ...