json : {password:"234234",userName:"zhangbo",birth:"2008-01-03"}
javabean:
1. public class JSONTestBean {
2.
3. private String userName;
4.
5. private String password;
6. private java.util.Date birth;
7. //getter and setter
8. }
用json-lib如何将 json 转成 JSONTestBean?
json-lib-2.2可以为对应的class注册解析类,记住一定要2.2,2.1有同步问题。切记切记。
写一个DateJsonValueProcessor.java
1. package anni.core.web.json;
2.
3. import java.text.DateFormat;
4. import java.text.SimpleDateFormat;
5.
6. import java.util.Date;
7.
8. import net.sf.json.JSONObject;
9. import net.sf.json.JsonConfig;
10. import net.sf.json.processors.JsonValueProcessor;
11.
12.
13. /**
14. * @author Lingo
15. * @since 2007-08-02
16. */
17. public class DateJsonValueProcessor implements JsonValueProcessor {
18. public static final String DEFAULT_DATE_PATTERN = "yyyy-MM-dd";
19. private DateFormat dateFormat;
20.
21. /**
22. * 构造方法.
23. *
24. * @param datePattern 日期格式
25. */
26. public DateJsonValueProcessor(String datePattern) {
27. try {
28. dateFormat = new SimpleDateFormat(datePattern);
29. } catch (Exception ex) {
30. dateFormat = new SimpleDateFormat(DEFAULT_DATE_PATTERN);
31. }
32. }
33.
34. public Object processArrayValue(Object value, JsonConfig jsonConfig) {
35. return process(value);
36. }
37.
38. public Object processObjectValue(String key, Object value,
39. JsonConfig jsonConfig) {
40. return process(value);
41. }
42.
43. private Object process(Object value) {
44. return dateFormat.format((Date) value);
45. }
46. }
然后在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;
# }