我们通常的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. Tomcat 配置问题总结

    本人是一个前端屌丝儿,最近没事研究了一下tomcat的部署问题,一下列几个实用的小技能(直接上干货了,不赘述): 1,路径引用部署 在tomcat目录下的conf/Catalina/localhost ...

  2. Sencha touch navigation 内嵌list,itemTap第二次点击不跳转的问题

    情景:navigation view 内嵌list,第一次触发list事件itemtap,正常跳转至详情页,点击"defaultBackButton"返回至list正常;再次点击触 ...

  3. BZOJ_2434_[NOI2011]_阿狸的打字机_(AC自动机+dfs序+树状数组)

    描述 http://www.lydsy.com/JudgeOnline/problem.php?id=2434 给出\(n\)个字符串,\(m\)个询问,对于第\(i\)个询问,求第\(x_i\)个字 ...

  4. OK335xS can't reset with reboot

    /*********************************************************************** * OK335xS can't reset * 说明: ...

  5. android捕获ListView中每个item点击事件

    转自:http://www.cnblogs.com/pswzone/archive/2012/03/10/2389275.html package com.wps.android;   import  ...

  6. BinaryReader和BinaryWriter的leaveOpen参数 z

    在.NET 4.5后,微软为BinaryWriter和BinaryReader类型的构造函数中加入了leaveOpen参数,当该参数为true后,BinaryReader或者BinaryWriter关 ...

  7. 《Python基础教程(第二版)》学习笔记 -> 第四章 字典

    字典是Python中唯一内建的映射类型. 字典中的值并没有特殊的顺序,但是都存储在一个特定的键(Key)里.键可以是数字.字符串甚至是元组. 字典的使用 某些情况下,字典比列表更加适用: 表征游戏棋盘 ...

  8. Android的有关EditText的能多行显示但无法禁止自动换行的Bug!

    需求: 使 EditText或TextView 支持 多行显示,但是不自动换行,即能水平滚动较长的内容. Bug: 想当然的,在XML定义中设置如下,应该就可以了. android:scrollHor ...

  9. C# 检测机器是否有声卡设备

    有时候我们的程序需要进行音频的播放,则我们首先需要判断机器是否有声卡能够进行音频的播放.在网上找了一下没有发现太多关于如何检机器是否有声卡的例子.我在看了一些文档后自己写了一个小测试程序,如果机器装有 ...

  10. Tomcat 7 Connector 精读(2) 协议处理器 Http11Protocol(待续)

    . Http11Protocol是阻塞式IO的实现,上图的几个方法是它的生命周期相关的方法.