jsonを返すサーバーを使用しています。要素の1つはオブジェクトか偽かのどちらかです - それは終了しません。私はこれがサーバーレスポンスの実装が非常に悪いことを知っていますが、そのようなケースはかなりありますが、これが私が処理しなければならないものです。どのようにこの状況に対処できますか?私は正常にそれを逆シリアル化するオブジェクトがある場合、何もない - 私はエラーが発生しました - オブジェクトが見つかりました。 さらに悪いことに、私はこのプロジェクトでこのような状況に将来どこで対処するのか分かりません。あなたはprogress
がここに偽で見ることができるように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": ""
}
]
}
]
}
: これはサンプルJSONです。他の時はdepart
のような普通のものです。逆シリアル化はRetrofit 2によって行われます。
ありがとうございます。 progress
プロパティは@JsonAdapter
アノテーションを付けていること
final class Response {
@SerializedName("progress")
@JsonAdapter(FalseAsNullTypeAdapterFactory.class)
final Progress progress = null;
}
final class Progress {
final String foo = null;
}
注:
あなたのコードはここに置くことができますか? –
'GsonBuilder'を使ってカスタムの' polymorhic '' TypeAdapter'や 'JsonDeserializer'を使ってカスタム' Gson'インスタンスを作成し、それを 'GsonConverterFactory'インスタンスに追加するだけで動作します。 –
もう一つの最も簡単な解決策は、Gsonに適切なデシリアライズ戦略そのものを取らせるマッピングで '' java.lang.Object''を 'progress'にすることです。しかし、 'instanceof'を使用し、そのフィールドを読んだところで型キャストを使わなければならないということです。 –