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

最新文章

  1. HttpClient 4.5.x 工具类设计与实现
  2. ZedGraph饼图---傻瓜版
  3. soapui中文操作手册(六)----创建REST Testing
  4. maven 配置篇 之pom
  5. 【转载】CreateProcess的用法
  6. Hibernate征途(六)之数量和关系映射
  7. 用mysql dump 导入与导出的方法
  8. Spring统一返回Json工具类,带分页信息
  9. AWT 新建窗口
  10. Wireshark使用介绍(二):应用Wireshark观察基本网络协议
  11. A context-aware personalized travel recommendation system based on geotagged social media data mining
  12. 冒泡排序 cpp实现
  13. C# 接受MQTT服务器推送的消息
  14. LeetCode 151 翻转字符串里的单词
  15. 原来找字也可以这样用ElseIf FindStr 手机按键精灵 跟大漠的区别
  16. Hdu1010Tempter of the Bone 深搜+剪枝
  17. cmd中mysql中文乱码问题
  18. Bootstrap 3之美07-插件Collapse、Accordion、Modal、Tab、Tooltip、Alert、Carousel
  19. 每日英语:Some Chinese Students Stay Home to Get Ahead
  20. 【SSH网上商城项目实战07】Struts2和Json的整合

热门文章

  1. 【转】Linux中常见问题(磁盘 定时任务)
  2. Andrew Ng在coursera上的ML视频 知识点笔记(2)
  3. CONFIG_DEBUG_USER【转】
  4. Linux 调优方案, 修改最大连接数(ulimit命令)【转】
  5. 驱动开发--【字符设备、块设备简介】【sky原创】
  6. crontab定时作业
  7. React-Native 之 项目实战(一)
  8. centos6 -> zabbix2.2升级3.0.5教程
  9. 解决Idea运行testng套件无testoutput文件夹问题
  10. Vue.js+Koa2移动电商实战 笔记