-
JSON to JavaBean 中的 Timestamp5
将一个javaBean转换成json格式如下:
{"bqBm":"123","bqMc":"tset","bqlxBm":"","fqbm":"","lxdjq":0,"qssj":"2010-05-14 18:33:59.546","sfdq":0,"sfkj":0,"zzsj":"2010-05-14 18:33:59.546"}
现在需要把这个json转换成对应的JavaBean,在javaBean中qssj 时间和zzsj的定义为Timestamp,
在转换过程前添加了代码:
JSONUtils.getMorpherRegistry().registerMorpher(new DateMorpher(new String[] { "yyyy-MM-dd","yyyy-MM-dd HH:mm:ss" }));
但后台还是抱错了,错误如下:
0 [2010-05-14 18:33:59,859] [main] WARN [net.sf.json.JSONObject.morphPropertyValue(JSONObject.java:1454)] - Can't transform property 'qssj' from java.lang.String into java.sql.Timestamp. Will register a default Morpher
net.sf.json.JSONException: Error while setting property=qssj type class java.lang.String
at net.sf.json.JSONObject.toBean(JSONObject.java:486)
at net.sf.json.JSONObject.toBean(JSONObject.java:253)
at com.test.Test.main(Test.java:293)
Caused by: net.sf.ezmorph.MorphException: java.sql.Timestamp
at net.sf.ezmorph.bean.BeanMorpher.morph(BeanMorpher.java:136)
at net.sf.ezmorph.MorpherRegistry.morph(MorpherRegistry.java:167)
at net.sf.json.JSONObject.morphPropertyValue(JSONObject.java:1464)
at net.sf.json.JSONObject.toBean(JSONObject.java:385)
... 2 more
Caused by: java.lang.InstantiationException: java.sql.Timestamp
at java.lang.Class.newInstance0(Class.java:340)
at java.lang.Class.newInstance(Class.java:308)
at net.sf.ezmorph.bean.BeanMorpher.morph(BeanMorpher.java:92)
... 5 more
现在的问题就是怎么让json中的日期字符串在转换成javaBean的时候映射成java.sql.Timestamp类型。
问题补充:cwx714 写道json-lib默认不支持java.sql.Date的序列化,要序列化自己的类,实现一个BeanProcessor处理即可。public class MyDateJsonBeanProcessor implements net.sf.json.processors.JsonBeanProcessor { public JSONObject processBean( Object bean, JsonConfig jsonConfig ) { JSONObject jsonObject = null; System.out.println("processor class name:"+bean.getClass().getName()); if( bean instanceof java.sql.Date ){ bean = new Date( ((java.sql.Date) bean).getTime() ); } if( bean instanceof java.sql.Timestamp ){ System.out.println("bean timestamp"); bean = new Date( ((java.sql.Timestamp) bean).getTime() ); } if( bean instanceof Date ){ jsonObject = new JSONObject(); jsonObject.element("time", ( (Date) bean ).getTime()); }else{ jsonObject = new JSONObject( true ); } return jsonObject; } }
你好,上面的这个类具体的怎么用呢, 我用了如下方式还是不行:
1、JsonConfig cfg = new JsonConfig();
MyDateJsonBeanProcessor processor = new MyDateJsonBeanProcessor();
jsonConfig.registerJsonBeanProcessor(java.sql.Date.class, processor);
jsonConfig.registerJsonBeanProcessor(java.sql.Timestamp.class, processor);
jsonObject = JSONObject.fromObject(str,jsonConfig);
Object obj = JSONObject.toBean(jsonObject, BqXx.class);
2、jsonObject = JSONObject.fromObject(str,jsonConfig);
BqXx bqXx = new BqXx();
Object obj = JSONObject.toBean(jsonObject,bqXx,jsonConfig);
两种方式都不行啊,请教你是怎么运用MyDateJsonBeanProcessor 类的。2010年5月14日 19:09
3个答案 按时间排序 按投票排序
-
我也遇到了同样的问题 只能处理 java。util。date日期型字段 java.sql.date 不知道为什么不支持!
有解决方法告诉我下 把java。sql。date改成java.util,date这种方式就不用告诉我了
QQ 14356488022014年5月22日 18:47
-
使用JsonConfig配置json转化.
JsonConfig cfg = new JsonConfig(); cfg.registerJsonValueProcessor(java.util.Date.class,new JsonValueProcessor() { private final String format="yyyy-MM-dd"; public Object processObjectValue(String key, Object value, JsonConfig arg2) { if(value==null) return ""; if (value instanceof Date) { String str = new SimpleDateFormat(format).format((Date) value); return str; } return value.toString(); } public Object processArrayValue(Object value, JsonConfig arg1) { return null; } }); Collection<JsonBean> list = JSONArray.toCollection(JSONArray.fromObject(jsonStr,cfg ), JsonBean.class); JSONArray json = JSONArray.fromObject(votes,cfg);
2010年5月14日 19:35
-
json-lib默认不支持java.sql.Date的序列化,要序列化自己的类,实现一个BeanProcessor处理即可。
public class MyDateJsonBeanProcessor implements net.sf.json.processors.JsonBeanProcessor { public JSONObject processBean( Object bean, JsonConfig jsonConfig ) { JSONObject jsonObject = null; System.out.println("processor class name:"+bean.getClass().getName()); if( bean instanceof java.sql.Date ){ bean = new Date( ((java.sql.Date) bean).getTime() ); } if( bean instanceof java.sql.Timestamp ){ System.out.println("bean timestamp"); bean = new Date( ((java.sql.Timestamp) bean).getTime() ); } if( bean instanceof Date ){ jsonObject = new JSONObject(); jsonObject.element("time", ( (Date) bean ).getTime()); }else{ jsonObject = new JSONObject( true ); } return jsonObject; } }
2010年5月14日 19:14
相关推荐
提供json转javabean和javabean转json的方法
一个自制的json转换jar 直接调用JsonFactory.toJson()方法可将javaBean转换成json
自己写的一个json生成JavaBean工具类,需要有fastJson依赖存在才能使用,通过输入读取json数据的文本地址和输出javaBean文件的地址,执行Json2BeanUtil类的json2Bean方法,可自动生成JavaBean,需要自己手动导入各...
json 所需要的jackson-annotations-2.4.0.jar,jackson-core-2.4.2.jar, jackson-databind-2.4.2.jar,jackson-mapper-asl-1.9.11.jar
资源包内含有说明和效果图 只需要将Json字符串复制到工具内,一键转换为对应实体类(javabean类)。 非常好用,为程序员节省了很多时间。
利用json读取JavaBean
我们开发的java系统,经常需要调用其他系统的API。这些API的返回格式,往往都是json格式。这个小工具,可以帮助你把json格式的数据,转换成对应的javabean。以简化你手动拷贝粘贴json属性的工作。
javabean 通过此工具实现json生成javabean实体类 你给我json,我帮你输出javabean实体类,超级简单便捷,省去了你手动敲代码的重复性工作
快速将json数据中字段转成javabean类
json自动生成javabean的工具jar
软件介绍: 一款让json能够自动生成javabean的工具,源自网络有需要的可以试试。
JQuery利用json读取JavaBean_List
json转javabean的一个工具,只要输入类名和合法的json格式就会在当前文件夹下生成java文档,操作时图形界面的,纯java编写可以跨平台操作。
xml与json、javabean的互相转换
the tool help you to generate javabean(pojo) by json.it is so strong that you will like it.enjoy it now at ##功能介绍 我们开发的java系统,经常需要调用其他系统的API。这些API的返回格式,往往都是json...
首字母大写的json串转为javabean实例,
本项目为maven项目,下载后可直接运行示例项目。项目中包括jackson流式API示例,jackson常用工具示例(已封装好工具类,包括各种操作细节),jackson树型模型示例。
json与JavaBean、Map和list之间的转换问题
json一键生成javabean工具
JSON转javabean(pojo)利器-附件资源