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

解决大多数 Json 格式问题的最佳方法是反之亦然:创建您的时间,转换为 Json 对象并研究字符串表示。我想你会很快找到你的问题。

关于您的问题:DateTime您发布的格式是 ISO 8601。JSON 没有为日期/时间指定这种格式。

您可以尝试使用Joda Time来获取 Json 可以解析的正确日期类型。

ISO 时间格式

或者其他很好的使用GSON库的方法。

于 2012-12-09T08:45:03.613 回答
0

您拥有的时间格式是 SQL。您可以使用 java.SQL.date 类对其进行解析。

于 2012-12-09T18:40:04.597 回答