`
y806839048
  • 浏览: 1118770 次
  • 性别: Icon_minigender_1
  • 来自: 上海
文章分类
社区版块
存档分类
最新评论

json和bean互转中时间格式的显示和处理(解决总是显示系统当前时间后, 时间为空的时候异常处理)

    博客分类:
  • json
阅读更多

我在处理json和java的相互转换中出现这样的错误:

net.sf.json.JSONException: Error while setting property=date type class java.lang.String

出错的具体情况如下:

在Java-->Json时,日期为空,我写了一个JsonDateProcessor,作为处理Date类型数据的处理器

 

 

Java代码  收藏代码
  1. import java.text.DateFormat;  
  2. import java.text.SimpleDateFormat;  
  3. import java.util.Date;  
  4.   
  5. import net.sf.json.JsonConfig;  
  6. import net.sf.json.processors.JsonValueProcessor;  
  7.   
  8. public class JsonDateProcessor implements JsonValueProcessor {  
  9.     public static final String DEFAULT_DATE_PATTERN = "yyyy-MM-dd";  
  10.     private DateFormat dateFormat;  
  11.   
  12.     public JsonDateProcessor() {  
  13.         dateFormat = new SimpleDateFormat(DEFAULT_DATE_PATTERN);  
  14.     }  
  15.   
  16.     /** 
  17.      * 构造方法. 
  18.      *  
  19.      * @param datePattern 
  20.      *            日期格式 
  21.      */  
  22.     public JsonDateProcessor(String datePattern) {  
  23.         try {  
  24.             dateFormat = new SimpleDateFormat(datePattern);  
  25.         } catch (Exception ex) {  
  26.             dateFormat = new SimpleDateFormat(DEFAULT_DATE_PATTERN);  
  27.         }  
  28.     }  
  29.   
  30.     public Object processArrayValue(Object value, JsonConfig jsonConfig) {  
  31.         return process(value);  
  32.     }  
  33.   
  34.     public Object processObjectValue(String key, Object value,  
  35.             JsonConfig jsonConfig) {  
  36.         return process(value);  
  37.     }  
  38.   
  39.     private Object process(Object value) {  
  40.         try {  
  41.             return dateFormat.format((Date) value);  
  42.         } catch (Exception e) {  
  43.             return "";  
  44.         }  
  45.     }  
  46. }  

 

 

这里我将java中date处理出错时返回"",包含当date为null情况。

 

当我将json转回java的时候,报错了:net.sf.json.JSONException: Error while setting property=date type class java.lang.String

 

看了下json-lib的源码,才发现Json转Java的时候,调用ezmorph-1.0.6.jar中的DateMorpher类有问题:如果date的格式错误或者为空(总之就是转换错误)的时候,没有对错误处理。

就在net.sf.ezmorph.object.DateMorpher的这一段

Java代码  收藏代码
  1. try{   
  2.        return dateParser.parse( strValue.toLowerCase() );  
  3.  } catch( ParseException pe ){   
  4.      // ignore exception, try the next format   
  5. }   

 

 

 所以我改成如下样子

 

Java代码  收藏代码
  1. try{  
  2.    return dateParser.parse( strValue.toLowerCase() );  
  3. }  
  4. catch( ParseException pe ){  
  5.    return null;  
  6. }  

 

 这样就行了。

测试代码:

 

Java代码  收藏代码
  1. package com.jrj.datamart.tmp;  
  2.   
  3. import net.sf.ezmorph.object.DateMorpher;  
  4. import net.sf.json.JSONObject;  
  5. import net.sf.json.util.JSONUtils;  
  6.   
  7. public class JsonToObjTest {  
  8.     public static void main(String[] args) {  
  9.         try {  
  10.             JSONObject jsonObject = new JSONObject();  
  11.             jsonObject.put("str""sssssss");  
  12.             jsonObject.put("date""");  
  13.             String[] dateFormats = new String[] { "yyyy-MM-dd" };  
  14.             JSONUtils.getMorpherRegistry().registerMorpher(new DateMorpher(dateFormats));  
  15.             TmpObj obj = (TmpObj) JSONObject.toBean(jsonObject, TmpObj.class);  
  16.             System.out.println(obj);  
  17.         } catch (Exception e) {  
  18.             e.printStackTrace();  
  19.         }  
  20.   
  21.     }  
  22. }  

 

 

 运行结果:

 

Java代码  收藏代码
  1. com.jrj.datamart.tmp.TmpObj@5483cd[date=<null>,str=sssssss]   

  

这里的date就被转换成null了。

附件是我上传的编译过的ezmorph-1.0.6.jar。json-lib的jar没问题,有问题的是ezmorph,或者复写一个即可

分享到:
评论

相关推荐

    json和bean转换

    在Java开发中,经常需要将JSON字符串转换为Java Bean对象,反之亦然,以便于数据的序列化和反序列化。这篇博客(虽然链接无法在此提供)可能探讨了这个过程以及相关的工具和源码实现。 JSON是一种轻量级的数据交换...

    JSON 转BEAN 工具包

    JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,被广泛用于前后端交互,而BEAN(JavaBean)是Java编程中的一个概念,代表具有特定规则的Java类,通常用作数据容器。将JSON转换为BEAN或者反之,是...

    Java bean转换为Json Schema

    Java Bean转换为Json Schema是一种常见的数据转换操作,特别是在开发基于RESTful API的Web服务时,因为JSON Schema提供了数据验证和文档化的功能。Java Bean是Java编程中的一个概念,它是一类具有特定规则的POJO...

    json字符串实体bean或者List互转(gson和jackson,支持泛型)

    json字符串实体bean或者List&lt;bean&gt;互转(gson和jackson,支持泛型),支持json的格式化,所需要的包在代码也有说明。还有少的可以告知我,谢谢

    Bean转JSON

    支持Bean转JSON List&lt;&gt; 转JSON

    java bean 转为JSON

    在Java开发中,将Java Bean转换为JSON对象是一项常见的任务,特别是在处理前后端交互时。JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,易于人阅读和编写,同时也易于机器解析和生成。Java Bean则...

    json和xml互转

    在实际开发中,有许多现成的库和工具可以帮助进行JSON和XML的互转,如JavaScript中的`xml2js`库和`json-stringify-safe`库,Python中的`xmltodict`和`json`模块等。压缩包中的`xmlTojson`可能是一个简单的实现,用于...

    JSON转换为JAVA对象及日期格式转换处理 -

    JSON转换为JAVA对象及日期格式转换处理 -

    delphi中的json和dataset互转

    有还在用delphi7的同志们没,d7没有提供json和dataset的互转, 该方法是网上其他大神写的,我转发,只是原来的代码有几个缺陷,我进行了修改:1.原来不能识别字段类型;2.原来的转换是把所有字段长度都设置为字符型...

    json和xml互转.jar

    "json和xml互转.jar"这个工具就是为了解决这两种格式转换的问题。开发者可以输入JSON字符串,该程序会解析JSON并生成对应的XML字符串;同样,也可以输入XML字符串,程序将其解析并转化为等效的JSON格式。这种转换...

    json与bean的转换

    转换完成后,`person`对象的属性将会被填充为JSON对象中的对应值。 在实际开发中,可能会遇到更复杂的情况,比如嵌套的对象或数组。JSON-lib也提供了处理这些复杂结构的方法。例如,一个JSON数组可以转换为Java的...

    delphi数据集和json互转

    在Delphi编程环境中,数据集(Dataset)是用于存储和管理结构化数据的核心组件,而JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,广泛应用于网络数据传输。将Delphi的数据集与JSON进行互转是开发...

    json转换bean

    在现代软件开发中,尤其是在Web服务和前后端分离架构中,JSON(JavaScript Object Notation)作为数据交换格式的重要性日益凸显。它简洁、轻量且易于人阅读,使得它成为APIs和配置文件中的首选。Java Bean则是Java中...

    java代码实现完成json转bean类

    原生的java代码,用java代码实现json转换成java类bean对象,生成文件在当前类的同级目录

    springboot json时间格式化处理的方法

    具体来说,`@JsonFormat`注解可以应用在Java Bean的属性上,用于在序列化(将Java对象转换为JSON字符串)和反序列化(将JSON字符串转换为Java对象)过程中指定日期时间的格式。例如,可以在一个实体类的日期属性上...

    SpringMVC中后台转换json格式

    在前后端交互中,JSON(JavaScript Object Notation)是一种常用的数据交换格式,它轻量级且易于人阅读和编写,同时也方便机器解析和生成。然而,当我们在使用SpringMVC和Ajax进行数据交互时,可能会遇到406错误,这...

    (Java)json和String互转必备Jar包

    总的来说,这个"(Java)json和String互转必备Jar包"为Java开发者提供了一个便捷的工具,使他们能够在项目中方便地处理JSON数据,无论是从网络获取,还是在本地存储和处理。掌握好这些库的使用,对于提升开发效率和...

    JSON互转工具

    它采用完全独立于语言的文本格式,但也使用了类似于C风格的语言(如C、C++、C#、Java、JavaScript、Perl、Python等)的习惯,使得JSON易于人阅读和编写,同时也易于机器解析和生成。在Android和Java开发中,JSON扮演...

    JS实现XML转JSON格式互转压缩包

    本压缩包“JS实现XML转JSON格式互转”提供了JavaScript库来实现在两者之间的转换,这在处理服务器与前端交互或存储数据时非常有用。 首先,我们来看"xmldom"这个文件。XML DOM(Document Object Model)是W3C的一个...

    bean,json工具类

    在Java开发中,Bean对象和JSON数据的相互转换是非常常见的操作。Bean对象是Java编程中的一个核心概念,它代表了具有特定属性和方法的对象,通常用于数据存储和传输。而JSON(JavaScript Object Notation)是一种轻量...

Global site tag (gtag.js) - Google Analytics