Gson 转日期中的错误

Posted 沽名钓誉

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Gson 转日期中的错误相关的知识,希望对你有一定的参考价值。

今天在用Gson做json转化是遇到一个问题,本地执行没有问题(windows 7),包丢到服务器上(Centos)就报错了。

 

后经分析发现DateTypeDapter类中取本地环境的日期格式参考http://blog.csdn.net/liao_leo/article/details/44593095

private final DateFormat enUsFormat  
    = DateFormat.getDateTimeInstance(DateFormat.DEFAULT, DateFormat.DEFAULT, Locale.US);  
private final DateFormat localFormat  
    = DateFormat.getDateTimeInstance(DateFormat.DEFAULT, DateFormat.DEFAULT);  
private final DateFormat iso8601Format = buildIso8601Format();  
  
private static DateFormat buildIso8601Format() {  
  DateFormat iso8601Format = new SimpleDateFormat("yyyy-MM-dd\'T\'HH:mm:ss\'Z\'", Locale.US);  
  iso8601Format.setTimeZone(TimeZone.getTimeZone("UTC"));  
  return iso8601Format;  
} 

解决方法:

修改Gson gson = new Gosn();

为:Gson gson = new GsonBuilder().setDateFormat("yyyy-MM-dd HH:mm:ss").create();

 

Bingo!

以上是关于Gson 转日期中的错误的主要内容,如果未能解决你的问题,请参考以下文章

Gson全解析(上)-Gson基础(转)

json数据结构和gson的比较

gson转换日期会失真吗

[转]快速搞懂Gson的用法

RecyclerView未显示已解析的GSON数据

(转) Java中的负数及基本类型的转型详解