- 浏览: 925158 次
- 性别:
- 来自: 北京
文章分类
- 全部博客 (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 3718以这样的代码为例, <selec ... -
jQuery中each的break和continue
2010-10-22 15:54 30686each实质上是一个for循环,那么能不能像 ... -
套在一个Table中的Div不能隐藏
2010-10-13 17:59 3927直接用图说话: 操作前: 操作 ... -
previousElementSibling还是previousSibling?
2010-09-10 17:54 7018FireFox(版本号:3.5.11)中不支持Ja ... -
隐藏Table中套的Table
2010-09-10 17:10 1302如图所示: 点了红框中的加号后,变成: 也 ... -
自己实现Table增加Row时的几个心得记录
2010-09-10 16:42 1497自己用jQuery搞了个Table增加Row的东东 ... -
由实现JavaScript中的Map想到的
2010-09-10 16:13 1540项目中要用到JavaScr ... -
jQuery跟prototype关于“$”的冲突解决总结
2010-07-21 09:01 1341问题描述: jQuery跟其它的JavaScri ... -
JavaScript与displayTag标签的合作 -- 操作表头(二)
2009-12-10 16:46 1600这一版是对JavaScript与displayTag标签的合作 ... -
用JavaScript操作displayTag表头操作
2009-03-22 09:13 2578直接了当一些, displayTag有个缺点:用它生 ... -
JSP中Radio button使用时的一点经验
2008-12-18 21:03 4828就一张图片,图片上包含了所有信息: -
JavaScript与displayTag标签的合作 -- 操作表头(续)
2008-10-24 12:21 1695上一篇里写了定位到目标表头与onmouseover的 ... -
JavaScript与displayTag标签的合作 -- 操作表头.
2008-10-23 19:04 4003这段时间在用displayTag, 它有很多好 ... -
自写的一个JavaScript小小工具
2008-07-18 10:03 1867由于项目需要,写了一个JavaScript的工具,专门来 ... -
对浏览器中的context menu的认识.
2008-06-22 18:02 2319对浏览器中的context menu的认识. 一 ... -
用json时的一个问题
2008-06-19 14:11 9232假设有一个Person类, public class P ... -
JavaScript中实现工厂模式.
2008-06-17 08:42 3281JavaScript中实现工厂模式. 第一次亲 ... -
JSON,Ajax,Spring组合使用时的一个问题.
2008-03-27 13:32 3145工作中用到JSON,可当它与Ajax结合使用时有一个槛过不去了 ... -
You Used JavaScript to Write WHAT?
2008-03-26 10:47 1435You Used JavaScript to Write WH ... -
在使用JSON时的一点麻烦事.
2008-03-26 10:20 7582在使用JSON时的一点麻烦 ...
相关推荐
使用json显示员工列表
JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,被广泛用于Web应用程序之间传递数据。而JSON Schema则是一个JSON格式的规范,用于定义JSON数据的结构和限制,类似于XML Schema,它为JSON数据提供了...
而JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,常用于Web服务与客户端之间的数据传输。在本项目中,我们关注的是如何在MFC应用中使用json11库来解析和操作JSON数据。 json11是一个小型且易于...
`json-c`就是这样一个专门用于C语言的JSON解析库,它提供了对JSON数据的读取、创建、修改和序列化等功能,使得C程序员可以方便地与JSON格式进行交互。 `json-c`库的核心特性包括: 1. **解析和生成JSON**:`json-c...
电协第一次作业pcb.json
标题 "pb解析与生成json" 涉及到的技术主要围绕着ProtoBuf(Protocol Buffers)和JSON这两种数据序列化格式。ProtoBuf是由Google开发的一种高效的数据交换的序列化协议,而JSON则是一种轻量级的数据交换格式,广泛...
标题中的“实现protobuf与json的互转”是指在软件开发中,如何将使用Protocol Buffers(protobuf)编写的结构体数据转换成JSON格式,反之亦然。Protocol Buffers是Google推出的一种数据序列化协议,而JSON...
jsonview是另一款流行的Chrome插件,它的主要功能与JSON-handle类似,但也有其独特的优点: 1. **兼容性**:jsonview不仅支持JSON,还能够处理JSONP(JSON with Padding)格式的数据,这是一种常用于跨域数据请求的...
最好用的c++json库 nlohmann json源代码最好用的c++json库 nlohmann json源代码最好用的c++json库 nlohmann json源代码最好用的c++json库 nlohmann json源代码最好用的c++json库 nlohmann json源代码最好用的c++json...
例如,对于一个JSON对象,可以使用`new JSONObject(jsonString)`创建一个对象实例;对于JSON数组,使用`new JSONArray(jsonString)`。 3. 访问数据:通过`get()`或`opt()`方法获取键对应的值,如`JSONObject.get(...
在IT行业中,JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,广泛用于服务器与客户端之间传递数据。SQL(Structured Query Language)则是用于管理关系数据库的语言。将JSON转换为创建SQL语句的...
JSON(JavaScript Object ...它提供了一系列方便的API,使得JSON的创建、解析、转换变得简单,同时与其他数据格式如XML的交互也十分便捷。在理解并熟练掌握这些知识点后,开发者能够更好地应对JSON数据处理的各种场景。
总的来说,JSON与树的相互转换是开发中的常见操作,通过使用如Newtonsoft.Json这样的库,我们可以轻松地在两者之间进行切换,实现数据的高效管理和操作。无论是从JSON解析成树,还是将树结构序列化为JSON,都能帮助...
### JSON 教程 (Java 与 JSON 的使用) #### JSON 的基本概念 JSON(JavaScript Object Notation)是一种轻量级的数据交换格式。它基于一种文本形式的数据表示方式,旨在简化数据传输并提高效率。JSON 与 XML 类似...
在IT行业中,序列化和反序列化是数据传输和存储的关键环节,而PBJson就是一种针对protobuf(Protocol Buffers)格式的数据与Json格式之间转换的工具。本文将深入探讨Pbjson的使用方法、原理以及它如何处理Json字符串...
JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,被广泛用于Web服务和应用程序之间的数据传输。它以其简洁明了的结构,易于人类阅读和编写,同时也方便机器解析和生成。JsonViewer是一款专为JSON...
JSON(JavaScript Object Notation http://www. json .org/ json -zh.html ),是一种轻量级的基于文本...的在 JSON 串与 JavaScript 对象之间进行转换。如果夸大来说,它是另一种理想 的但 有别于 XML 数据交换语言。
JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,被广泛用于Web应用程序之间传输数据。它以文本形式存储和传递数据,易于人阅读和编写,同时也易于机器解析和生成。`net.sf.json`是开源Java库,它...
JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,被广泛用于Web服务和应用程序之间的数据传输。它易于人阅读和编写,同时也易于机器解析和生成。`net.sf.json`是开源项目Apache软件基金会下的一个...
1. **json-lib-2.2.3-jdk15.jar**:这是Json-lib库的一个版本,它是一个Java JSON处理器,支持多种Java集合和类型,如Map、List、Bean等与JSON之间的转换。通过Json-lib,你可以方便地将Java对象转换为JSON字符串,...