我正在使用返回json的服務器。其中一個要素是對象或虛假 - 它不是退出。我知道這是非常糟糕的服務器響應實現,並且有很多這樣的情況,但這是我必須處理的。我該如何處理這種情況?如果有一個對象我成功反序列化它,如果沒有 - 我得到錯誤 - 預期的對象找到BOOLEAN。 更糟糕的是,我不知道我將來會在這個項目中遇到這種情況。 這是樣品JSON:反序列化json的錯誤或對象與Retrofit GsonConverterFactory
{
"course": {
"id": "47902",
"course": "3844",
"group": "1825",
"teacher": "59502",
"table": "1447",
"client": "1",
"course_id": "3844",
"description": ""
},
"teacher": {
"id": "59502",
"post": "0",
"experience": "",
"dep_experience": "",
"rank": "0",
"online": "1458891283",
"departments": [
null
]
},
"depart": {
"id": "100",
"postcode": "",
"public": "1",
"alias": "",
"faculty": "97",
"client": "1"
},
"progress": false,
"files": [
{
"teacher": {
"id": "59502",
"code": "53bd7c21ad05b03e",
"photo": "1"
},
"files": [
{
"id": "0ffe41e5003ee5c0",
"owner": "59502",
"address": "0ffe41e5003ee5c0",
"type": "f",
"size": "0",
"time": "2015-07-10 14:39:15",
"data": ""
}
]
}
]
}
正如你可以看到progress
是假這裏。其他時候它是普通的對象,如depart
。反序列化是通過Retrofit 2完成的。
非常感謝。
你可以把你的代碼在這裏? –
你只需要使用'GsonBuilder'創建一個自定義'Gson'實例'定製'polymorhic''TypeAdapter'或'JsonDeserializer',並將其添加到'GsonConverterFactory'實例即可。 –
另一個最簡單的解決方案是在你的映射中將'progress'設置爲'java.lang.Object',讓Gson自己採取任何適當的反序列化策略。但是,這意味着您必須使用'instanceof'並在讀取該字段的位置鍵入強制轉換。 –