浏览 596 次
|
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
|---|---|
| 作者 | 正文 |
|
最后更新时间:2008-06-19 关键字: jsonobject.tobean(...)的问题.
假设有一个Person类,
public class Person{
private java.util.Date birthday;
// settor and gettor methods.....
}
现在客户端那边传来如下的json规则的字符串String personJson = "{birthday:\"06/28/2008 17:00:00\"}",要用 JSONOjbect.toBean(JSONObject.from(personJson ),Person.class)方法来获得相应的Person实例时就出问题了,报错如下:
注意这里虽然有"Person's brithday: Thu Jun 19 13:57:39 CST 2008 "这样输出,但它的时间值与输入不符. 这个怎么解决? 以下是我做实验用的Java代码: =======================
package json;
import java.util.Date;
import net.sf.json.JSONObject;
public class Person {
private Date birthday;
public Date getBirthday() {
return birthday;
}
public void setBirthday(Date birthday) {
this.birthday = birthday;
}
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());
}
}
====
所需Jar包见附件.
声明:JavaEye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
|
|
| 返回顶楼 | |
|
最后更新时间:2008-06-19
这是因为你在json中的字符串类型的"06/28/2008 17:00:00"
在java中没有办法直接转换成为Date类型的数据.因而报出了异常 你需要通过JsonValueProcessor类,进行日期的转换格式. 解决方法可以参见: http://bolingsky.blog.sohu.com/74165282.html 里面有详细描述. |
|
| 返回顶楼 | |
|
最后更新时间:2008-08-06
class MapToDateMorpher extends AbstractObjectMorpher { //https://sourceforge.net/forum/forum.php?thread_id=1861466&forum_id=587134
private static String DATE_TIME_FORMAT = "MM/dd/yyyy HH:mm:ss";
static SimpleDateFormat dateTimeFormat = new SimpleDateFormat(DATE_TIME_FORMAT);
static TimeZone pstTimeZone = TimeZone.getTimeZone("PST");
public Object morph(Object value) {
if(value instanceof String) {
String s = (String)value;
return convertStringToTimestamp(s);
}
return null;
}
public Class morphsTo() {
return Date.class;
}
public boolean supports(Class clazz) {
// return clazz.equals(String.class);
return String.class.isAssignableFrom( clazz );
}
private Date convertStringToTimestamp(String input){
if(!StringUtils.isEmpty(input)){
try {
return dateTimeFormat.parse(input);
} catch (ParseException e) {
}
}
return null;
}
}
|
|
| 返回顶楼 | |




