मैं एक एंड्रॉइड एप्लिकेशन विकसित कर रहा हूं जो कुछ Google ऐप इंजन वेब-सेवाओं के साथ संवाद करता है।जैक्सन/जीसन पुस्तकालयों के साथ पार्स किए गए गलत डेटटाइम (मिनट) को कैसे ठीक किया जाए?
यह एप्लिकेशन एक चैट गतिविधि लागू करता है जिसमें बहुत ही सरल सुविधा है: टेक्स्ट भेजें।
डीबगिंग के दौरान मैंने देखा कि सर्वर से जो संदेश मैं सूचीबद्ध कर रहा था, उसी क्रम में प्रदर्शित नहीं किया गया था जिसे मैंने उन्हें अपने आवेदन पर भेजा था। मेरा पहला विचार था कि समस्या सर्वर से आ रही थी।
सबसे पहले मैं कच्चे Json जाँच की मैं प्राप्त था:
{
"messages": [
{
"message": "test 3",
"author": "daniel",
"message_id": "5724160613416960",
"sent_at": "2014-11-13T09:42:42.861950"
},
{
"message": "test 2",
"author": "daniel",
"message_id": "5649050225344512",
"sent_at": "2014-11-13T09:42:10.390960"
},
{
"message": "test 1",
"author": "daniel",
"message_id": "5178081291534336",
"sent_at": "2014-11-13T09:41:01.998830"
}
],
"kind": "company#chatsItem",
"etag": "\"RUCkC9XynEQNZ2t5E0aa41edXro/xRNtgkWIUbq4zCgmv2iq2fy-UIg\""
}
आप देख सकते हैं, कच्चे डेटा सही ढंग से आदेश दिया है। लेकिन यहां मजाकिया हिस्सा आता है। जब मैं इस तरह के JacksonFactory (या यहां तक GsonFactory) के रूप में एक JSON पार्सर, जोड़ें:
[0] = {[email protected]6} size = 4
[0] = {[email protected]}"author" -> "daniel"
[1] = {[email protected]}"message" -> "test 3"
[2] = {[email protected]}"message_id" -> "5724160613416960"
[3] = {[email protected]}"sent_at" -> "2014-11-13T10:57:03.950+01:00"
[1] = {[email protected]6} size = 4
[0] = {[email protected]}"author" -> "daniel"
[1] = {[email protected]}"message" -> "test 2"
[2] = {[email protected]}"message_id" -> "5649050225344512"
[3] = {[email protected]}"sent_at" -> "2014-11-13T10:48:40.960+01:00"
[2] = {[email protected]8} size = 4
[0] = {[email protected]}"author" -> "daniel"
[1] = {[email protected]}"message" -> "test 1"
[2] = {[email protected]}"message_id" -> "5178081291534336"
[3] = {[email protected]}"sent_at" -> "2014-11-13T10:57:39.830+01:00"
क्यों इस तरह के एक यादृच्छिक अंतर है:
Company.Builder builder = new Company.Builder(AndroidHttp.newCompatibleTransport(), new JacksonFactory(), null);
Company service = builder.build();
ChatsChatCollectionResponse response = service.chats().list(user_id, album_id, token).execute();
List<ChatsChatResponse> messagesResponse = response.getMessages();
यहाँ ChatsChatResponse
आइटम के रूप में ऊपर उसी तरह का आदेश दिया हैं "sent_at" फ़ील्ड पर?
संपादित मुझे लगता है कि मैं 1 घंटे पारी कि समयक्षेत्र से मेल खाती है के बारे में बात नहीं कर रहा, बल्कि पर कैसे यादृच्छिक मिनट कर रहे हैं उल्लेख करना भूल गया।
आप 'ChatsChatResponse' के लिए POJO परिभाषा में शामिल कर सकता है? यह जानना महत्वपूर्ण है कि डेटाटाइप का क्या उपयोग किया जा रहा है। ऐसा लगता है कि आप जैक्सन आधारित deserializer का उपयोग कर रहे हैं, तो जैक्सन का संस्करण भी मायने रख सकता है: आप नवीनतम पैच संस्करण का उपयोग करके भी आपको सत्यापित करना चाहते हैं। – StaxMan