次のエラーが発生します。
java.lang.IllegalStateException:文字列が必要ですが、行1、列29、パス$ .entree [0] .photoでBEGIN_OBJECTでした
私のjson応答は次のように構成する必要があるため、私には意味がありません。
import com.google.gson.annotations.SerializedName;
public class Entree {
@SerializedName("id")
public int id;
@SerializedName("photo")
public Entree.Photo photo;
public class Photo {
@SerializedName("url")
public String url;
@SerializedName("web")
public Entree.Photo.Web web;
@SerializedName("mobile")
public Entree.Photo.Mobile mobile;
public class Web {
@SerializedName("url")
public String url;
}
public class Mobile {
@SerializedName("url")
public String url;
}
}
}
JSONデータ:
"entrees": [
{
"id": 32,
"photo":
{
"url": "4c312e9aed37a59319096a03_1.jpg",
"web": {
"url": "web_4c312e9aed37a59319096a03_1.jpg"
},
"mobile": {
"url": "mobile_4c312e9aed37a59319096a03_1.jpg"
}
}
},
...
Photoがクラスの文字列ではなくオブジェクトであることがわかりますか?それで私は何が間違っているのですか?
内部クラスをマークしてみてください static
でGsonドキュメント、それは言います
Gsonは、静的にネストされたクラスを逆シリアル化することもできます。ただし、引数なしのコンストラクターには、逆シリアル化の時点では使用できない包含オブジェクトへの参照も必要なので、Gsonは純粋な内部クラスを自動的に逆シリアル化できません。この問題に対処するには、内部クラスを静的にするか、内部クラスのカスタムInstanceCreatorを提供します。
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加