【问题标题】:Spring MVC REST JsonSerializer serialize long in exponential notation formatSpring MVC REST JsonSerializer 以指数符号格式序列化 long
【发布时间】:2013-08-20 08:11:57
【问题描述】:

在我的 Spring MVC REST 应用程序中有自定义 Json 序列化器(用于 ObjectMapper):

public class DateSerializer extends JsonSerializer<LocalDate>
{

    public LocalDateSerializer()
    {
        super();
    }

    @Override
    public void serialize(LocalDate value, JsonGenerator jgen, SerializerProvider provider) throws IOException
    {
        if (value != null)
        {
            jgen.writeNumber(value.toDateTimeAtStartOfDay().getMillis());

        }
    }
}

并且服务返回此字段的 json 表示指数符号格式,例如1.377216E12 而不是正常的时间戳格式。并非所有服务器平台都会发生这种情况。

非常感谢。

【问题讨论】:

  • 如果添加这个 System.out.println(Locale.getDefault());到不同的服务器,你会得到什么?我怀疑您的服务器上有不同的语言环境,这会产生不同的数字格式。

标签: json spring-mvc jsonserializer


【解决方案1】:

尝试像这样格式化数字:

String.format(Locale.US, "%d", value.toDateTimeAtStartOfDay().getMillis())

这将完全使用该模式。

【讨论】:

  • 但是我需要写长吗?不是字符串 - jgen.writeNumber()
  • 啊……真傻。对不起。不过,我认为您的问题出在语言环境上。看我上面的评论。
猜你喜欢
  • 2013-07-26
  • 2020-01-24
  • 2016-01-23
  • 1970-01-01
  • 2014-01-06
  • 2011-07-05
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多