gson日期转换问题

今天遇到个很奇怪的问题,gson解析日期字符串,本地执行可以,服务器上执行就报错。


这种问题一般都跟环境相关,到gson源代码中看到了DateTypeDapter这个类,

  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;
  }
它有几种parse日期字符串的的DataFormat类,一个个尝试,如果不成功就报错。


2015-03-24 14:54:14我们的日期格式是这样,本地转没问题,服务器上转就报错。localFormat和enUsFormat跟本地语言有关,它的一些格式化类都在这个localdata.jar里面,java会获取本机的语言,然后加载不同的类获取格式化信息。我本地的是zh_CN,服务器上的是en_US,本地是能够转换2015-03-24 14:54:14这个,因为它的格式正好是yyyy-MM-dd这种,但是服务器上的Dataformat的partern是en_us,无法解析2015-03-24 14:54:14,就报错了。

解决办法,修改linux的

1.修改/etc/sysconfig/i18n
英文版系统:
LANG="en_US.UTF-8"
SYSFONT="latarcyrheb-sun16"

中文版系统:
LANG="zh_CN.UTF-8"
SYSFONT="latarcyrheb-sun16"


2.source /etc/sysconfig/i18n

3.重启服务

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
Gson是一个用于Java和Android的开源JSON库,可以将Java对象转换为JSON字符串,也可以将JSON字符串转换为Java对象。下面是Gson的详细使用方法: 1.导入Gson库 在项目的build.gradle文件中添加以下依赖: ``` implementation 'com.google.code.gson:gson:2.8.6' ``` 2.将Java对象转换为JSON字符串 ``` //创建一个Java对象 Person person = new Person("Tom", 18); //创建Gson对象 Gson gson = new Gson(); //将Java对象转换为JSON字符串 String json = gson.toJson(person); ``` 3.将JSON字符串转换为Java对象 ``` //创建一个JSON字符串 String json = "{\"name\":\"Tom\",\"age\":18}"; //创建Gson对象 Gson gson = new Gson(); //将JSON字符串转换为Java对象 Person person = gson.fromJson(json, Person.class); ``` 4.处理复杂JSON数据 如果JSON数据比较复杂,例如包含嵌套的JSON对象或JSON数组,可以使用Gson的TypeToken类来处理。 ``` //创建一个JSON字符串 String json = "{\"name\":\"Tom\",\"age\":18,\"address\":{\"city\":\"Beijing\",\"street\":\"Haidian\"},\"hobbies\":[\"reading\",\"swimming\"]}"; //创建Gson对象 Gson gson = new Gson(); //将JSON字符串转换为Java对象 Type type = new TypeToken<Person>(){}.getType(); Person person = gson.fromJson(json, type); ``` 5.配置Gson Gson还提供了一些配置选项,例如设置日期格式、排除特定字段等。 ``` //创建Gson对象 Gson gson = new GsonBuilder() .setDateFormat("yyyy-MM-dd") .excludeFieldsWithoutExposeAnnotation() .create(); //使用Gson对象进行序列化和反序列化 ``` 以上就是Gson的详细使用方法,希望能帮助到你。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值