Я изучаю Java и пишу приложение для Android, которое использует объект JSON, который передается сервером.
У меня есть все это работающее кроме дат.
Я возвращаю один из них
'SomeKey':'\/Date(1263798000000)\/'
Я использую org.json.JSONObject
.
Как я преобразовываю SomeKey
в a java.Util.Date
?
Формат даты не является стандартным в JSON, поэтому вам нужно выбрать, как вы "пропустите его". Я думаю, что значение, которое вы видите, в миллисах.
На Java:
System.out.println (new Date(1263798000000L));
// prints: Mon Jan 18 09:00:00 IST 2010
Это, конечно, в моем часовом поясе, но в любом случае это довольно недавняя дата.
Из javadoc конструктора Date:
Параметры:
дата - миллисекунды с 1 января 1970 года, 00:00:00 GMT.
Ссылка на документы здесь -> http://java.sun.com/javase/6/docs/api/java/util/Date.html#Date%28long%29
Как уже упоминал Йони, JSON не определяет, что такое дата и как ее сериализовать. Глядя на опубликованный вами фрагмент JSON, кажется, что кто-то посчитал слишком креативным, сериализовав такую дату.
Здесь важно отметить следующее: для любого парсера JSON это просто строка. Часть «Дата (12345)» не имеет смысла. Вы должны сами проанализировать это в java.util.Date
, что в этом случае означает удаление всего, что не является числом, и использование числа (времени UNIX) для создания экземпляра java. util.Date
.
Для протокола. Типичным способом передачи даты с использованием JSON будет либо
{'timestamp':1265231402}
, либо более вероятный
{'timestamp':'Wed, 03 Feb 2010 22:10:38 +0100'}
. Последним примером будет текущая временная метка (на момент написания этой статьи) с использованием стандартного форматирования RFC-2822, которое можно легко проанализировать с помощью Утилиты Java для работы с датами. Посмотрите SimpleDateFormat , чтобы узнать, как анализировать даты в Java.