I'm working with FlexJSON and am having trouble parsing a Date
object from an int
. I'm trying to use the JSONDeserializer like so:
String json = decryptJson(new String(personalInformationData));
return new JSONDeserializer<PersonalInformation>().deserialize(json);
And the value of json
is:
{"address1":"123 Fake St","address2":"#4","address3":"","city":"Springfield","class":"PersonalInformation","confirmEmailAddress":"foo@bar.com","coverageGroupName":"","coverageGroupNumber":"","coverageType":"I","dob":21600000,"emailAddress":"foo@bar.com","firstName":"Zapp","formOfId":"D","group":false,"idNum":"K201132083220","idState":"AL","individual":true,"lastName":"Brannigan","middleInitial":"","nonUsAddress":false,"nonUsAddress1":null,"nonUsAddress2":null,"nonUsAddress3":null,"phone":"(555) 555-5555","ssn":"555555555","state":"OH","zip":"55555"}
Everything is parsed correctly unless the date of birth (dob
key) value is between December 7th, 1969 and January 25th, 1970 (or -2138400000 to 2095200000 in milliseconds), then FlexJSON throws this error:
[JSONException: [ dob ]: Parsing date 21600000 was not recognized as a date format]
I'm not sure how this is happening because new Date(21600000)
evaluates to Thu Jan 01 00:00:00 CST 1970
.
Has anyone encountered this?
Update #1
So it appears that this error is happening because JSONDeserializer can't handle dates saved as a Unix TimeStamp that are in the range of Dec. 7th, 1969 through Jan. 25th, 1970. Any other date outside of that range is accepted and is also a Unix TimeStamp.
I don't think that I need to implement a custom ObjectFactory with .use()
or create a custom Transformer because other Unix TimeStamps work that aren't in the failing date range.
Update #2
I tried implementing a transformer
upon serialization to change the date from a Unix TimeStamp to a date formatted string using:
String json = new JSONSerializer().transform(new DateTransformer("yyyy-caMM-dd"), "dob").serialize(personalInformation);
That worked exactly how it was supposed to but not upon deserialization. I'm still getting the same error:
[JSONException: [ dob ]: Parsing date 1970-01-01 was not recognized as a date format]