json : {password:"234234",userName:"zhangbo",birth:"2008-01-03"}
javabean:
用json-lib如何将 json 转成 JSONTestBean?
json-lib-2.2可以为对应的class注册解析类,记住一定要2.2,2.1有同步问题。切记切记。
写一个DateJsonValueProcessor.java
然后在bean -> json的时候
javabean:
- 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
- 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的时候
- /**
- * 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;
- }