当前位置: 首页 > 知识库问答 >
问题:

应为字符串,但在第1行第29列路径处为BEGIN_OBJECT

漆雕原
2023-03-14

我得到以下错误:

java.lang.IllegalStateException:需要一个字符串,但在第1行第29列路径$.entree[0]处是BEGIN_OBJECT。photo

这对我来说是没有意义的,因为我的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"
        }
      }   
    },   
  ...

你看到照片在我的课上是一个对象而不是一个字符串了吗?那我做错了什么?

共有1个答案

常光明
2023-03-14

尝试用static标记内部类

在Gson文档中,它说

Gson还可以反序列化静态嵌套类。然而,Gson不能自动反序列化纯内部类,因为它们的无参数构造函数还需要对包含对象的引用,而在反序列化时,该对象是不可用的。您可以通过将内部类设置为静态或为其提供自定义InstanceCreator来解决这个问题。

 类似资料: