我收到以下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);
答案 0 :(得分:0)
解决大多数Json格式问题的最佳方法是反过来:创建时间,转换为Json对象并研究字符串表示。我想你会很快找到你的问题。
关于您的问题:您发布的DateTime
格式是ISO 8601.JSON没有为日期/时间指定此格式。
您可以尝试使用Joda Time来获取Json可以解析的正确日期类型。
或者使用GSON
库的其他好方法。
答案 1 :(得分:0)
您拥有的时间格式是SQL。您可以使用java.SQL.date类解析它。