в моем Java-приложении я читаю массив JSON из REST API.
Вот мой код, который считывает отдельные объекты из массива JSON и пытается преобразовать каждый объект JSON в строго типизированный:
JSONArray jsonArray = new JSONArray(videoFromMessage);
for (int i = 0; i < jsonArray.length(); i++) {
JSONObject custtableObject = jsonArray.getJSONObject(i);
ObjectMapper mapper = new ObjectMapper();
Custtable custTable = mapper.readValue(custtableObject.toString(), new TypeReference<Custtable >(){});
}
Каждый объект custTable в этом массиве содержит поле с именем «modifieddatetime» со значением, подобным этому:
Fri Dec 31 18:00:00 CST 1
Вызов readValue вызывает это исключение:
com.fasterxml.jackson.databind.exc.InvalidFormatException:
Can not construct instance of java.util.Date from String value 'Fri Dec 31 18:00:00 CST 1':
not a valid representation (error: Failed to parse Date value 'Fri Dec 31 18:00:00 CST 1':
Can not parse date "Fri Dec 31 18:00:00 CST 1":
not compatible with any of standard forms
("yyyy-MM-dd'T'HH:mm:ss.SSSZ", "yyyy-MM-dd'T'HH:mm:ss.SSS'Z'", "EEE, dd MMM yyyy HH:mm:ss zzz", "yyyy-MM-dd"))
Есть ли какой-нибудь метод, функция, утилита или API, который я мог бы вызвать, чтобы преобразовать значение этого поля в приемлемый формат?
ObjectMapper
на каждой итерации? Почему вы используетеTypeReference
только для непараметризованного типа? - person Sotirios Delimanolis   schedule 23.09.2016ObjectMapper
может отлично анализировать массивы JSON. В этом случае вы должны использоватьTypeReference
для представленияList<Custtable>
или использоватьCusttable[].class
напрямую. - person Sotirios Delimanolis   schedule 23.09.2016ObjectMapper
— тяжелый объект. Не нужно каждый раз создавать новый. Он не изменяет свое состояние на основе вещей, которые он анализирует. Это также потокобезопасно. - person Sotirios Delimanolis   schedule 23.09.2016