【问题标题】:String Parse, JSON Stringify & GSON Parse of Date Fails日期的字符串解析、JSON Stringify 和 GSON 解析失败
【发布时间】:2013-10-03 04:28:17
【问题描述】:

我把这个字符串解析成一个 Javascript 对象。

{
"startTime": 233432420233,
"endTime": 233432431000,
"bufferingDelays": [
    {
        "time": 233432420233,
        "delayLength": 100
    },
    {
        "time": 233432420433,
        "delayLength": 50
    },
    {
        "time": 233432420833,
        "delayLength": 75
    }
    ]
}

这是执行解析然后转换为 JSON 字符串的 Javascript 代码:

var reportObject = jQuery.parseJSON(reportJSONString);

reportObject.startTime = new Date(reportObject.startTime);
reportObject.endTime = new Date(reportObject.endTime);

for (var i = 0; i < reportObject.bufferingDelays.length; i++)
{                        
    var delay = reportObject.bufferingDelays[i];
    delay.time = new Date( delay.time );

    reportObject.bufferingDelays[i] = delay;
}

var reportObjectFinalString = JSON.stringify( reportObject );

JSON 转换产生的日期之一是:1977-05-25T18:20:20.233Z。我认为尾随的“Z”不好。

现在在 Java 中,我尝试将其解析为 Java 对象,如下所示:

Gson gson = new GsonBuilder().setDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSSZ").create();
Report report = gson.fromJson( jsonBuilder.toString(), Report.class );   

但我得到了这个例外:

SEVERE: Servlet.service() for servlet [ReportServlet] in context with path [/Report] threw exception [com.google.gson.JsonSyntaxException: 1977-05-25T18:20:20.233Z] with root cause
java.text.ParseException: Unparseable date: "1977-05-25T18:20:20.233Z"

【问题讨论】:

    标签: java javascript json gson


    【解决方案1】:

    你也需要引用Z

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

    SimpleDateFormat(用于GsonBuilder)将未引用的Z 表示您的日期字符串没有的时区。

    【讨论】:

      猜你喜欢
      • 2014-07-22
      • 1970-01-01
      • 2014-02-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多