- 浏览: 906868 次
- 性别:
- 来自: 北京
文章分类
- 全部博客 (322)
- Hibernate研究&源码 (27)
- Server (10)
- Coder碎语 (64)
- EnglishMulling (11)
- About XML (1)
- persistence (12)
- Core Java & OO (23)
- Java EE (6)
- JavaScript/JSON/Ajax/ext... (22)
- 我的读书笔记 (16)
- Source Codes Study (29)
- workFlow/jBPM (22)
- OFBiz: Open For Business (1)
- 项目积累 (21)
- srcStudy_acegi (1)
- Cache/Ehcache... (9)
- Java Test/JUnit.. (7)
- maven/ant (2)
- 设计模式 (1)
- SOA/cxf/ws-security (2)
- Android (4)
- 云计算/Hadoop (2)
- 加密/签名 (1)
- 正则表达式 (1)
- htmlparser (1)
- 操作系统 (5)
- DB (1)
最新评论
-
天使建站:
这里这篇文章更详细 还有完整的实例演示:js跳出循环 ...
jQuery中each的break和continue -
heshifk:
刚刚我也遇到同样的问题,然后就在纠结为什么不能直接使用brea ...
jQuery中each的break和continue -
masuweng:
不错写的.
集万千宠爱于一身的SessionImpl:get研究(四): Hibernate源码研究碎得(8) -
muzi131313:
这个老是忘,做一下笔记还是挺好的
jQuery中each的break和continue -
lg068:
data = data.replace("\n&qu ...
项目小经验: eval与回车符
字符串型的Date转化为JavaBean的问题终于解决了,现在回过头来整理下贴在博客里以备将来查询,若对别人能所帮助那就甚是欣慰了.
1, 情景再现.
问题是这样的,浏览器那边要Ajax地传来一些数据,其中包含的Date格式为"mm/dd/yyyy hh:mm:ss".Server与Client的数据传送用JSON来封装.JSON的优点在此就不用多说了,数据从Client传到Server端后就要用JSON来自动生成相应的JavaBean.对于primitive和String类型的数据在转化时没什么问题,可在当处理字符串表示的Date信息时麻烦就来了.
为了简化谈论,我采用了一个只包含Date类型属性的Person类来做实验.Person类的定义如下:
public class Person{ private java.util.Date birthday; // settor and gettor methods..... }
在Main方法中采用能想到的方法来把JSON格式的字符串转为JavaBean.
import net.sf.json.JSONObject; public class PersonTest { public static Person getInstance(String jsonVale) { return (Person)JSONObject.toBean(JSONObject.fromObject(jsonVale),Person.class); } public static void main(String[] args) { String personJson = "{birthday:\"06/28/2008 17:00:00\"}"; Person p = getInstance(personJson); System.out.println("Person's brithday: "+ p.getBirthday()); } }
可一运行,问题就出来,下面是所报的信息.
引用
2008-6-19 13:57:39 net.sf.json.JSONObject morphPropertyValue
警告: Can't transform property 'birthday' from java.lang.String into java.util.Date. Will register a default Morpher
2008-6-19 13:57:39 net.sf.ezmorph.bean.BeanMorpher morph
信息: Property 'java.util.Date.class' has no write method. SKIPPED.
2008-6-19 13:57:39 net.sf.ezmorph.bean.BeanMorpher morph
警告: Property 'java.lang.String.date' does not exist. SKIPPED.
2008-6-19 13:57:39 net.sf.ezmorph.bean.BeanMorpher morph
信息: Property 'java.util.Date.day' has no write method. SKIPPED.
2008-6-19 13:57:39 net.sf.ezmorph.bean.BeanMorpher morph
警告: Property 'java.lang.String.hours' does not exist. SKIPPED.
2008-6-19 13:57:39 net.sf.ezmorph.bean.BeanMorpher morph
警告: Property 'java.lang.String.minutes' does not exist. SKIPPED.
2008-6-19 13:57:39 net.sf.ezmorph.bean.BeanMorpher morph
警告: Property 'java.lang.String.month' does not exist. SKIPPED.
2008-6-19 13:57:39 net.sf.ezmorph.bean.BeanMorpher morph
警告: Property 'java.lang.String.seconds' does not exist. SKIPPED.
2008-6-19 13:57:39 net.sf.ezmorph.bean.BeanMorpher morph
警告: Property 'java.lang.String.time' does not exist. SKIPPED.
2008-6-19 13:57:39 net.sf.ezmorph.bean.BeanMorpher morph
信息: Property 'java.util.Date.timezoneOffset' has no write method. SKIPPED.
2008-6-19 13:57:39 net.sf.ezmorph.bean.BeanMorpher morph
警告: Property 'java.lang.String.year' does not exist. SKIPPED.
Person's brithday: Thu Jun 19 13:57:39 CST 2008
注意,虽然这也有时间信息打印了出来,可细看发现它不是我们所期待的那个,它是系统的当前时间.
这是怎么回事呢?所报的信息是什么意思?怎么出来的是系统的当前时间?
2,试着分析/解决
2.1 找准突破口
百度/Google一番后,没找到合适或相似的解决方案,问同学同事也没有得到满意的回答,于是就想着自己来解决了.可自己对JSON的了解也仅仅停留在为数不多常用方法上,其余像"它背后是怎么实现的?都可做哪些配置?"这样的问题一点也不知道了.
[align=left][/align]看API,一是由于API里的类/接口有二十来个,虽然跟Hibernate或Spring这样的大框架里类/接口在数量上没法比,但现在要有针对性地看时真的不知从哪个开始了,于是一会儿看下JsonConfig,过会再看下...,再有就是API里的描述很少自己也不能静下心来认真地看仔细地琢磨(这大概是源自于自己编码不规范造成的对API描述没有多少信任感吧).有没有跟Hibernate里类似的document呢?或许里有相关的描述.
再往下就习惯性地用debug来跟踪代码的执行,(幸好Java里有很多很多的开源项目,debug跟踪起来了丝毫不奋进费劲.)跟踪了一两遍后除了发现是什么时候报出上述信息外还是一头雾水.没别的办法再继续吧,随着跟踪的次数增多,前面看API时注意到的那些类活了起来,它们之间的调用关系渐渐地露出了来.在这个调用过程中围绕信息报出的那几行代码里的一个概念Morpher吸引了我的注意,意识到这就是问题的突破口.(感觉自己在写侦探小说.)
评论
3 楼
rmn190
2008-12-11
to jxncligang:
抱歉, 我刚看到你的留言,
解决方法是:
在toBean前加一句话:JSONUtils.getMorpherRegistry().registerMorpher(new DateMorpher(new String[] {"MM/dd/yyyy HH:mm:ss"}) );来配置记下Date转化时的Morpher就OK了
抱歉, 我刚看到你的留言,
解决方法是:
在toBean前加一句话:JSONUtils.getMorpherRegistry().registerMorpher(new DateMorpher(new String[] {"MM/dd/yyyy HH:mm:ss"}) );来配置记下Date转化时的Morpher就OK了
2 楼
jxncligang
2008-12-06
請問是如何解決的呢,我也有同樣問題
jxncligang@163.com
jxncligang@163.com
1 楼
java.fan
2008-06-30
你用 long 类型来表示 日期时间,不行吗?
再多传个表示时间格式的 参数,就差不多了.
再多传个表示时间格式的 参数,就差不多了.
发表评论
-
利用jQuery来反选Select
2010-11-01 14:36 3650以这样的代码为例, <selec ... -
jQuery中each的break和continue
2010-10-22 15:54 30610each实质上是一个for循环,那么能不能像 ... -
套在一个Table中的Div不能隐藏
2010-10-13 17:59 3879直接用图说话: 操作前: 操作 ... -
previousElementSibling还是previousSibling?
2010-09-10 17:54 6949FireFox(版本号:3.5.11)中不支持Ja ... -
隐藏Table中套的Table
2010-09-10 17:10 1217如图所示: 点了红框中的加号后,变成: 也 ... -
自己实现Table增加Row时的几个心得记录
2010-09-10 16:42 1432自己用jQuery搞了个Table增加Row的东东 ... -
由实现JavaScript中的Map想到的
2010-09-10 16:13 1477项目中要用到JavaScr ... -
jQuery跟prototype关于“$”的冲突解决总结
2010-07-21 09:01 1298问题描述: jQuery跟其它的JavaScri ... -
JavaScript与displayTag标签的合作 -- 操作表头(二)
2009-12-10 16:46 1523这一版是对JavaScript与displayTag标签的合作 ... -
用JavaScript操作displayTag表头操作
2009-03-22 09:13 2528直接了当一些, displayTag有个缺点:用它生 ... -
JSP中Radio button使用时的一点经验
2008-12-18 21:03 4745就一张图片,图片上包含了所有信息: -
JavaScript与displayTag标签的合作 -- 操作表头(续)
2008-10-24 12:21 1658上一篇里写了定位到目标表头与onmouseover的 ... -
JavaScript与displayTag标签的合作 -- 操作表头.
2008-10-23 19:04 3955这段时间在用displayTag, 它有很多好 ... -
自写的一个JavaScript小小工具
2008-07-18 10:03 1780由于项目需要,写了一个JavaScript的工具,专门来 ... -
对浏览器中的context menu的认识.
2008-06-22 18:02 2253对浏览器中的context menu的认识. 一 ... -
用json时的一个问题
2008-06-19 14:11 9182假设有一个Person类, public class P ... -
JavaScript中实现工厂模式.
2008-06-17 08:42 3228JavaScript中实现工厂模式. 第一次亲 ... -
JSON,Ajax,Spring组合使用时的一个问题.
2008-03-27 13:32 3097工作中用到JSON,可当它与Ajax结合使用时有一个槛过不去了 ... -
You Used JavaScript to Write WHAT?
2008-03-26 10:47 1399You Used JavaScript to Write WH ... -
在使用JSON时的一点麻烦事.
2008-03-26 10:20 7528在使用JSON时的一点麻烦 ...
相关推荐
使用json显示员工列表
json转换json schema
json与labview常见相互转化,能解决大多json问题
电协第一次作业pcb.json
json编码与解码json编码与解码json编码与解码json编码与解码json编码与解码json编码与解码json编码与解码
最好用的c++json库 nlohmann json源代码最好用的c++json库 nlohmann json源代码最好用的c++json库 nlohmann json源代码最好用的c++json库 nlohmann json源代码最好用的c++json库 nlohmann json源代码最好用的c++json...
通用emoji表情包与JSON
http传输与json解析,详细的介绍了如何请求网上数据,与json封装及json解析
JSON(JavaScript Object Notation http://www. json .org/ json -zh.html ),是一种轻量级的基于文本...的在 JSON 串与 JavaScript 对象之间进行转换。如果夸大来说,它是另一种理想 的但 有别于 XML 数据交换语言。
MFC使用JSON11将json,包括json字符串转对象,对象转json字符串
JSON文档 JSON手册
把一个json生成一个创建sql
JSON JSON .zip JSON JSON .zip JSON JSON .zip JSON JSON .zip
json对象,json描述方式,json与xml,json-rpc
JsonViewer 一款很好的JSON排版软件
jsonEditor Editor json jsonEditor Editor json jsonEditor Editor json jsonEditor Editor json
form数据与json对象的互相转换(完整版) * 将web Form 的数据转化成json字符串 * 将json对象的值解析后填入web Form 在AJAX开发中这是关键技术: 1、将form中的数据利用本工具转换成json格式的字符串,再通过ajax传...
一个json库, 用于c程序中解析json格式
flash与json结合的一个例子,里面是源文件,不过总觉得as2用json有些慢。
使用protobuf的Description技术,实现protobuf结构体与json语言之间的黑盒转换.