FlexJSON を使用していDate
ますが、int
. 私は JSONDeserializer を次のように使用しようとしています:
String json = decryptJson(new String(personalInformationData));
return new JSONDeserializer<PersonalInformation>().deserialize(json);
の値json
は次のとおりです。
{"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"}
生年月日 (dob
キー) の値が 1969 年 12 月 7 日から 1970 年 1 月 25 日 (または -2138400000 から 2095200000 ミリ秒) の間にない限り、すべてが正しく解析され、FlexJSON は次のエラーをスローします。
[JSONException: [ dob ]: Parsing date 21600000 was not recognized as a date format]
new Date(21600000)
と評価されるため、これがどのように起こっているのかわかりませんThu Jan 01 00:00:00 CST 1970
。
誰かがこれに遭遇しましたか?
更新 #1
したがって、JSONDeserializer は、1969 年 12 月 7 日から 1970 年 1 月 25 日までの範囲にある Unix タイムスタンプとして保存された日付を処理できないため、このエラーが発生しているようです。その範囲外の他の日付も受け入れられ、 Unix タイムスタンプ。
.use()
失敗した日付範囲にない他の Unix タイムスタンプが機能するため、カスタム Transformer を使用してカスタム ObjectFactory を実装したり、カスタム Transformer を作成したりする必要はないと思います。
アップデート #2
transformer
次を使用して、シリアル化時に日付を Unix タイムスタンプから日付形式の文字列に変更しようとしました。
String json = new JSONSerializer().transform(new DateTransformer("yyyy-caMM-dd"), "dob").serialize(personalInformation);
それは想定どおりに機能しましたが、逆シリアル化では機能しませんでした。私はまだ同じエラーが発生しています:
[JSONException: [ dob ]: Parsing date 1970-01-01 was not recognized as a date format]