как правильно преобразовать строковое представление в встроенную дату Java с помощью jackson ObjectMapper readValue?

в моем 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, который я мог бы вызвать, чтобы преобразовать значение этого поля в приемлемый формат?


person Eugene Goldberg    schedule 23.09.2016    source источник
comment
Почему вы используете две библиотеки разбора JSON? Почему вы создаете новый экземпляр ObjectMapper на каждой итерации? Почему вы используете TypeReference только для непараметризованного типа?   -  person Sotirios Delimanolis    schedule 23.09.2016
comment
ObjectMapper может отлично анализировать массивы JSON. В этом случае вы должны использовать TypeReference для представления List<Custtable> или использовать Custtable[].class напрямую.   -  person Sotirios Delimanolis    schedule 23.09.2016
comment
ObjectMapper — тяжелый объект. Не нужно каждый раз создавать новый. Он не изменяет свое состояние на основе вещей, которые он анализирует. Это также потокобезопасно.   -  person Sotirios Delimanolis    schedule 23.09.2016