我们通常的Json字符串和java当对象互转。经常有选择性地过滤掉一些属性值,和json-lib包JsonConfig为我们提供了这样一个 特征,有几种方法实施细则。

(1)建立JsonConfig实例,并配置属性排除列表,(2)用属性过滤器,(3)写一个自己定义的 JsonBeanProcessor.



1. 实现JSONString接口的方法



public class Person implements JSONString { 

private String name; 

private String lastname; 

private Address address; 



// getters & setters 



public String toJSONString() {

return "{name:'"+name+"',lastname:'"+lastname+"'}";

}

}





2.另外一种方法通过jsonconfig实例,对包括和须要排除的属性进行方便的加入或删除



public class Person { 

private String name; 

private String lastname; 

private Address address; 



// getters & setters 





JsonConfig jsonConfig = new JsonConfig(); 

jsonConfig.setExclusions( new String[]{"address"}); 

Person bean = new Person("jack","li"); 

JSON json = JSONSerializer.toJSON(bean, jsonConfig); 



3. 使用propertyFilter能够同意同一时候对须要排除的属性和类进行控制。这样的控制还能够是双向的。也能够应用到json字符串到java对象




public class Person { 

private String name; 

private String lastname; 

private Address address; 



// getters & setters 





JsonConfig jsonConfig = new JsonConfig(); 

jsonConfig.setJsonPropertyFilter( new PropertyFilter(){ 



public boolean apply(Object source/* 属性的拥有者 */ , String name
/*属性名字*/ , Object value/* 属性值 */ ){ 


// return true to skip name 

return source instanceof Person && name.equals("address"); 



}); 

Person bean = new Person("jack","li");

JSON json = JSONSerializer.toJSON( bean, jsonConfig ) 



4. 最后来看JsonBeanProcessor,这样的方式和实现JsonString非常类似。返回一个代表原来的domain类的合法JSONObject




public class Person { 

private String name; 

private String lastname; 

private Address address; 



// getters & setters 





JsonConfig jsonConfig = new JsonConfig(); 

jsonConfig.registerJsonBeanProcessor( Person.class, new JsonBeanProcessor(){ 



public JSONObject processBean( Object bean, JsonConfig jsonConfig ){ 

if(!(bean instanceof Person)){ 

return new JSONObject(true); 



Person person = (Person) bean; 

return new JSONObject() .element( "name", person.getName()) .element( "lastname", person.getLastname()); 




}); 



Person bean = new Person("jack","li");

JSON json = JSONSerializer.toJSON( bean, jsonConfig );

json处理复杂对象jsonConfig的更多相关文章

  1. JSON 与JAVA对象之间的转换(转)

    JSON与XML两者目前在数据交互方面都有很高的使用率,随着现在SOA的兴起,异构系统的整合地位相应提高,本篇文章主要介绍JSON与JAVA对象之间的相互转换. 一.对普通类型的JSON模式的转换 一 ...

  2. JSON和java对象的互转

    先说下我自己的理解,一般而言,JSON字符串要转为java对象需要自己写一个跟JSON一模一样的实体类bean,然后用bean.class作为参数传给对应的方法,实现转化成功. 上述这种方法太麻烦了. ...

  3. 速战速决 (6) - PHP: 获取 http 请求数据, 获取 get 数据 和 post 数据, json 字符串与对象之间的相互转换

    [源码下载] 速战速决 (6) - PHP: 获取 http 请求数据, 获取 get 数据 和 post 数据, json 字符串与对象之间的相互转换 作者:webabcd 介绍速战速决 之 PHP ...

  4. 把普通对象转换成json格式的对象

    1.什么叫做JSON?JSON只是一种数据格式(它不是一种新的数据类型) var obj = {name: "中国", age: 5000};//->普通格式的对象 var ...

  5. json转bean对象

    一下为个人收藏,以便下次使用. 前端传的json格式为: [{"suppliercode":"gylhld_gycqlt3_gycqlt1","pro ...

  6. JSON与js对象序列化

    JavaScript对象表示法(JavaScript Object Notation,简称JSON)是一种轻量级的数据交换格式,它基于js字面量表示法,是js的一个子集.虽然是一个js的子集但是他与语 ...

  7. json转换成对象

    在json转换成对象时,json的key会与java 类的字段一一对应.如果没有映射上的java字段会在该数据类型上填充默认值,如int 0,String null 等. 没有映射的json key在 ...

  8. JSON字符串和对象之间的转换

    JSON(JavaScript Object Notation) 是JavaScript编程语言的一个子集.正因JSON是JavaScript的一个子集,所以它可清晰的运用于此语言中. eval函数 ...

  9. Json与类对象转换

    Json在js,jquery中可以直接使用,比如下串: { "from":"en" ,"to":"zh" ," ...

随机推荐

  1. JAVA高级特性 - 注解

    注解是插入到代码中用于某种工具处理的标签.这些标签可以在源码层次上进行操作,或者可以处理编译器将其纳入到注解类文件中. 注解不会改变对程序的编译方式.Java编译器会对包含注解和不包含注解的代码生成相 ...

  2. Zen Coding support in WebStorm/PhpStorm

    With the last WebStorm/PhpStorm EAP you can edit HTML and CSS code really fast usingZen Coding featu ...

  3. apache开源项目--Sirona

    Apache Sirona 为 Java 应用程序提供了一个简单但可扩展的监控解决方案. apache / sirona

  4. 基于WebForm+EasyUI的业务管理系统形成之旅 -- ParamQueryGrid行、列合并(Ⅸ)

    上篇<基于WebForm+EasyUI的业务管理系统形成之旅 -- 施工计划查询(Ⅷ)>,主要介绍通过报表工具数据钻取,获取施工计划详细信息. 这篇我们看看ParamQueryGrid[行 ...

  5. UVA 10462 Is There A Second Way Left? 次小生成树

    模板题 #include <iostream> #include <algorithm> #include <cstdio> #include <cstdli ...

  6. HDU 5603 the soldier of love 离线+树状数组

    这是bestcorder 67 div1 的1003 当时不会做 看了赛后官方题解,然后翻译了一下就过了,而且速度很快,膜拜官方题解.. 附上官方题解: the soldier of love 我们注 ...

  7. js中的new关键字都干了些什么?

    new 操作符 在有上面的基础概念的介绍之后,在加上new操作符,我们就能完成传统面向对象的class + new的方式创建对象,在javascript中,我们将这类方式成为Pseudoclassic ...

  8. 面向对象基础(class0425)字符串与集合

    常用类库 学习.net就是学习它的无数个类库怎么用,先看两个简单的 String 字符串,不可变特性.字符串可以看成字符数组 属性 Length 方法 IsNullOrEmpty() 静态方法 ToC ...

  9. 分享一个安卓中异步获取网络图片并自适应大小的第三方程序(来自github)

    安卓中获取网络图片,生成缓存 用安卓手机,因为手机流量的限制,所以我们在做应用时,要尽量为用户考虑,尽量少耗点用户的流量,而在应用中网络图片的显示无疑是消耗流量最大的,所以我们可以采取压缩图片或者将图 ...

  10. 稀疏表示(sparse representation)和字典学习

    近十几年来,稀疏(sparsity)已经成为信号处理及其应用领域中处于第一位的概念之一.近来,研究人员又致力于过完备(overcomplete)信号表示的研究.这种表示不同于许多传统的表示.因为它能提 ...