您的位置:首页 > 编程语言 > Java开发

Json-lib 如何转换日期格式的字段 json-->java

2008-05-22 15:03 826 查看
json : {password:"234234",userName:"zhangbo",birth:"2008-01-03"}
javabean:

Java代码



public class JSONTestBean {

private String userName;

private String password;

private java.util.Date birth;

//getter and setter

}

public class JSONTestBean {      private String userName;      private String password;     private java.util.Date birth;     //getter and setter }


用json-lib如何将 json 转成 JSONTestBean?

json-lib-2.2可以为对应的class注册解析类,记住一定要2.2,2.1有同步问题。切记切记。
写一个DateJsonValueProcessor.java

Java代码



package anni.core.web.json;

import java.text.DateFormat;

import java.text.SimpleDateFormat;

import java.util.Date;

import net.sf.json.JSONObject;

import net.sf.json.JsonConfig;

import net.sf.json.processors.JsonValueProcessor;

/**

* @author Lingo

* @since 2007-08-02

*/

public class DateJsonValueProcessor implements JsonValueProcessor {

public static final String DEFAULT_DATE_PATTERN = "yyyy-MM-dd";

private DateFormat dateFormat;

/**

* 构造方法.

*

* @param datePattern 日期格式

*/

public DateJsonValueProcessor(String datePattern) {

try {

dateFormat = new SimpleDateFormat(datePattern);

} catch (Exception ex) {

dateFormat = new SimpleDateFormat(DEFAULT_DATE_PATTERN);

}

}

public Object processArrayValue(Object value, JsonConfig jsonConfig) {

return process(value);

}

public Object processObjectValue(String key, Object value,

JsonConfig jsonConfig) {

return process(value);

}

private Object process(Object value) {

return dateFormat.format((Date) value);

}

}

package anni.core.web.json;  import java.text.DateFormat; import java.text.SimpleDateFormat;  import java.util.Date;  import net.sf.json.JSONObject; import net.sf.json.JsonConfig; import net.sf.json.processors.JsonValueProcessor;   /**  * @author Lingo  * @since 2007-08-02  */ public class DateJsonValueProcessor implements JsonValueProcessor {     public static final String DEFAULT_DATE_PATTERN = "yyyy-MM-dd";     private DateFormat dateFormat;      /**      * 构造方法.      *      * @param datePattern 日期格式      */     public DateJsonValueProcessor(String datePattern) {         try {             dateFormat = new SimpleDateFormat(datePattern);         } catch (Exception ex) {             dateFormat = new SimpleDateFormat(DEFAULT_DATE_PATTERN);         }     }      public Object processArrayValue(Object value, JsonConfig jsonConfig) {         return process(value);     }      public Object processObjectValue(String key, Object value,         JsonConfig jsonConfig) {         return process(value);     }      private Object process(Object value) {         return dateFormat.format((Date) value);     } }


然后在bean -> json的时候

Java代码



/**

* write.

*

* @param bean obj

* @param writer 输出流

* @param excludes 不转换的属性数组

* @param datePattern date到string转换的模式

* @throws Exception 写入数据可能出现异常

*/

public static void write(Object bean, Writer writer,

String[] excludes, String datePattern) throws Exception {

JsonConfig jsonConfig = configJson(excludes, datePattern);

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

json.write(writer);

}

/**

* 配置json-lib需要的excludes和datePattern.

*

* @param excludes 不需要转换的属性数组

* @param datePattern 日期转换模式

* @return JsonConfig 根据excludes和dataPattern生成的jsonConfig,用于write

*/

public static JsonConfig configJson(String[] excludes,

String datePattern) {

JsonConfig jsonConfig = new JsonConfig();

jsonConfig.setExcludes(excludes);

jsonConfig.setIgnoreDefaultExcludes(false);

jsonConfig.setCycleDetectionStrategy(CycleDetectionStrategy.LENIENT);

jsonConfig.registerJsonValueProcessor(Date.class,

new DateJsonValueProcessor(datePattern));

return jsonConfig;

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐