`
yiyu
  • 浏览: 187085 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

使用json-lib的JSONObject.toBean( )时碰到的日期属性转换的问题

    博客分类:
  • java
阅读更多
今天碰到这样一个问题:
当前台以JSON格式向后台传递数据的时候,对于数据中的日期属性,无法正常转换为相应的Date属性。
JSON数据是这样的:
{"birthday":"1980/01/01","name":"testname"}

我要转换成的类是这样的:

public class Person {
private String name;
private Date birthday;

public void setName(String name) {
this.name = name;
}

public String getName() {
return name;
}

public void setBirthday(Date birthday) {
this.birthday = birthday;
}

public Date getBirthday() {
return birthday;
}
}


转换的代码是这样的:

JSONObject jsonPerson = JSONObject.fromObject(personData);  //personaData是json串
Person person = (Person)JSONObject.toBean(jsonPerson, Person.class);


转换时并不抛出例外,而是在日志中打出以下警告信息:
Can't transform property 'birthday' from java.lang.String into java.util.Date. Will register a default Morpher

在网上搜了一遍,发现了很多关于进行相反方向转换时的帖子,即使用json-lib将bean转成json串时,日期属性的格式不符合习惯,后来好不容易才找到了这个问题的解决办法,虽然是抄别人的,但也发一贴为以后其他人更容易找到答案出点力,呵呵。废话少说,其实解决方法很简单,把转换代码改成这样:

JSONObject jsonPerson = JSONObject.fromObject(personData);
String[] dateFormats = new String[] {"yyyy/MM/dd"};
JSONUtils.getMorpherRegistry().registerMorpher(new DateMorpher(dateFormats));
Person person = (Person)JSONObject.toBean(jsonPerson, Person.class);


想深究原因的人可以参看json-lib和ezmorpher的相关文档。
分享到:
评论
1 楼 hlgyyx 2009-09-09  
用到了,支持一下!

相关推荐

    json-lib-2.3.jar

    这个版本的库解决了在Java中将Java对象转换为JSON对象以及反向转换的问题,特别是对于特定数据结构如`JsonObject`和`JsonArray`的处理。 描述中提到的`JsonObject.fromObject()`方法是json-lib中用来将一个Java对象...

    json-lib-2.4-jdk15.jar

    2. **Java对象到JSON的转换**:json-lib支持将Java对象如HashMap、ArrayList等直接转换成JSON格式,如`JSONObject.fromObject()`和`JSONArray.fromObject()`方法。 3. **JSON到Java对象的反序列化**:反之,它也...

    json-lib-2.4-jdk15.jar及其相关依赖

    `json-lib`库的使用使得Java开发者在处理JSON数据时更加便捷,但需要注意的是,随着Java生态的发展,现在更流行的是使用Jackson、Gson或Google的AutoValue库来处理JSON,它们提供了更多特性和更好的性能。...

    json-lib-2.2.2-jdk15.jar

    2. **XML与JSON互转**:json-lib还支持XML与JSON之间的转换,这在处理不同数据格式时非常有用。 3. **自定义序列化**:通过实现JSONAware接口或使用JSONSerializer的transform方法,开发者可以定制JSON序列化过程,...

    json-lib-2.3-jdk15-sources javadoc .jar

    在使用JSON-lib时,开发者通常会先创建一个JSON对象,如JSONObject或JSONArray,然后通过调用其方法来添加、修改或删除元素。对于复杂的Java对象,可以使用`net.sf.json.JSONObject.fromObject()`和`...

    json-lib应用所有jar

    User user = JSONObject.toBean(new JSONTokener(jsonString), User.class); ``` 4. **扩展支持**:如果需要处理自定义类型,可以实现`net.sf.json.JSONObject`和`net.sf.json.JSONArray`的子类,或者使用注解来...

    json-lib-2.2.3-jdk15.jar 相关jar包

    3. 将JSON转换为Java对象:通过`JSONObject.toBean()`或`JSONArray.toList()`方法将JSON数据转换回Java对象。 4. JSON的解析与生成:可以使用`JSONObject.parse()`解析JSON字符串,用`JSONObject.toString()`生成...

    json-lib-2.3-jdk15.jar和它的源码包

    7. **API简洁易用**:json-lib的API设计简洁明了,易于理解和使用,比如`JSONArray.fromObject()`和`JSONObject.toBean()`等方法。 总的来说,`json-lib`是一个强大且灵活的JSON处理工具,对于Java开发者来说,无论...

    json-lib-jdk.jar

    例如,将一个Java对象转换为JSON字符串可以使用`JSONObject.fromObject(object)`方法,而将JSON字符串解析回Java对象则可以使用`JSONObject.toBean(jsonString, Class)`方法。 需要注意的是,虽然`json-lib`在过去...

    json-lib-2.4 jar 程序文件

    `将JSON对象转换为字符串,而`Map, Object> map = JSONObject.toBean(JSONObject.fromObject(jsonString));`则将JSON字符串反序列化为Java Map。 4. **XML与JSON的转换**:JSON-Lib还提供了XML和JSON之间的转换功能...

    json-lib 2.4 的 jar 包

    - json-lib不支持Java 8及更高版本的新特性,如日期时间API,因此在处理这些新类型时可能需要额外的转换步骤。 - 考虑到性能和功能的提升,对于新的项目,推荐使用更新的JSON库。 总之,json-lib 2.4作为一个经典...

    json-lib-2.4-jdk15及其依赖jar包

    如果你接收到一个JSON字符串,你可以使用`JSONObject.toBean()`或`JSONArray.toList()`方法将它转换回相应的Java对象,如HashMap、ArrayList或其他自定义类的实例。 3. **处理数组和集合**:JSON-Lib支持将Java的...

    json-lib-2.4-jdk15.jar,json开发jar包

    4. JSON解析:使用`JSONObject.toBean()`或`JSONArray.toList()`方法将JSON数据转换为Java对象或列表。 5. 输出JSON:可以使用`toString()`方法将JSON对象转换为字符串,便于打印或在网络上传输。 6. 遍历和操作:...

    com.alibaba.fastjson.JSON , net.sf.json.JSONObject

    这是Json-lib库的一部分,Json-lib是一个用于将Java对象转换为JSON表示的库,反之亦然。虽然它的功能和Fastjson相似,但在性能上略逊于Fastjson。使用`JSONObject`的基本操作如下: 1. 创建一个JSONObject并添加...

    json-lib-2.4JAR包

    5. **性能优化**:考虑到性能,json-lib在设计时进行了优化,能够高效地处理大量数据转换,减少内存消耗和提高处理速度。 6. **兼容性**:`json-lib-2.4`版本兼容Java 1.4及更高版本,可以在各种Java平台上运行,...

    json-lib-2.4所需全部JAR包及方法演示

    3. **JSON转对象**:使用`JSONObject.toBean(jsonObject)`或`JSONArray.toList(jsonArray)`将JSON数据转换回Java对象或列表。 4. **处理复杂类型**:对于更复杂的类型如日期、自定义对象等,可能需要注册适配器或...

    json-lib 依赖jar

    2. 将JSON字符串转换为Java对象:反之,`JSONObject.toBean(JSONObject json)`可以将JSON对象转化为对应的Java bean。 3. 处理数组和集合:JSON-lib也支持JSON数组(JSONArray)和Java集合之间的转换,这对于处理...

    json-lib最新版本 含源码

    4. **类型转换策略**:`json-lib`在处理不同类型的数据时,如日期、枚举等,会采用特定的转换策略。这些策略可以通过`JsonConfig`配置类进行定制。 5. **XML与JSON的相互转换**:`json-lib`还提供了一个独特功能,...

    json-lib-2.4-jdk15及其依赖jar包.rar

    `json-lib`是一个Java库,用于将Java对象转换为JSON格式,以及将JSON数据转换回Java对象。`json-lib-2.4-jdk15`是该库的一个特定版本,适用于Java 1.5环境。 该压缩包"json-lib-2.4-jdk15及其依赖jar包.rar"包含的...

Global site tag (gtag.js) - Google Analytics