2

以下のJSONを受け取り、説明と日付を解析できます。私はずっと解析しようとしてきましたが、私が試みるすべては私に悪い出力を与え続けます。

時間オブジェクトは5:30と表示されるはずですが、その形式で解析できるかどうかはわかりません。public String format3339 (boolean allDay) JSON入力、JSON解析、および出力を投稿したのだと思いました。

入力

{"object":[{"description":"blah blah blah","date":"2012-12-11","time":"2000-01-01T05:30:00Z"}]}

主に気になります"time":"2000-01-01T05:30:00Z"

構文解析

JSONArray arr = null;
list = new ArrayList<HashMap<String, String>>();
}
for (int i = 0; i < arr.length(); i++) {
    JSONObject d = arr.getJSONObject(i);
    Time time = new Time();
    String etime = d.getString(TIME_TAG);
    String description = d.getString(DESCRIPTION_TAG);
    String date = d.getString(DATE_TAG);
            //************************************************************************
            //********I suspect that i might be converting the time object incorrectly but whatever 
            //********i put here either does not work or gives me bad output. 
    Boolean mtime = time.parse3339(etime);
    if (mtime == true) {
        etime = time.toString();
    }
            //************************************************************************
    HashMap<String, String> map = new HashMap<String, String>();
    map.put(DATE_TAG, date);
    map.put(DESCRIPTION_TAG, description);
    map.put(TIME_TAG, etime);

    list.add(map);

OutPut-この出力がわかりません。入力は3339形式だと思いましたが、出力を操作するのは困難です。与えられた文字列から530を解析するパーサーを作成できると思いますが、出力はtoString()操作からのYYYYMMDDTHHMMSS形式になると思いました。

20000101T053000UTC(0,0,0,-1,946704600)

編集::これが私が少しの努力で欲しいものを手に入れるために一緒にハックしたものです。今のところ動作します。

JSONArray arr = null;
list = new ArrayList<HashMap<String, String>>();
}
for (int i = 0; i < arr.length(); i++) {
    JSONObject d = arr.getJSONObject(i);
    String etime = d.getString(TIME_TAG);
    String description = d.getString(DESCRIPTION_TAG);
    String date = d.getString(DATE_TAG);

        if (eTime.charAt(11) == '0')
    eTime = eTime.substring(12, 16);
    else
    eTime = eTime.substring(11, 16);

            HashMap<String, String> map = new HashMap<String, String>();
    map.put(DATE_TAG, date);
    map.put(DESCRIPTION_TAG, description);
    map.put(TIME_TAG, etime);

    list.add(map);
4

2 に答える 2

0

あなたが持っている時間形式はSQLです。java.SQL.dateクラスを使用して解析できます。

于 2012-12-09T18:40:04.597 に答える
0

ほとんどの Json 形式の問題を解決する最善の方法は、その逆を行うことです。時間を作成し、Json オブジェクトに変換して、文字列表現を調べます。問題がすぐに見つかると思います。

あなたの問題について:DateTimeあなたが投稿した形式は ISO 8601 です。JSON は、日付/時刻に対してこの形式を指定していません。

Joda Timeを使用して、Json が解析できる適切な Date タイプを取得できます。

またはISO 時刻形式

GSONまたは、ライブラリを使用する他のかなり良い方法。

于 2012-12-09T08:45:03.613 に答える