6

この文字列を取得し、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 変換によって生成される日付の 1 つが次のとおり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"
4

1 に答える 1

10

も引用する必要がありZます

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

(SimpleDateFormatで使用される) は、日付文字列にないタイムゾーンを意味するためGsonBuilderに引用符なしを取ります。Z

于 2013-09-27T01:13:16.720 に答える