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

期待BEGIN_OBJECT但BEGIN_ARRAY但json resone已经有对象了

苏富
2023-03-14

我正在学习改装2,遇到如下错误:

带系统。错误:com.google.格森。JsonSyntaxException:java。lang.IllegalStateException:应为BEGIN\u对象,但在第1行第94列路径$处为BEGIN\u数组。com的riceField。谷歌。格森。内部的绑定ReflectiveTypeAdapterFactory$适配器。阅读(ReflectiveTypeAdapterFactory.java:226)。谷歌。格森。内部的绑定ReflectiveTypeAdapterFactory 1美元。阅读(ReflectiveTypeAdapterFactory.java:131)。谷歌。格森。内部的绑定ReflectiveTypeAdapterFactory$适配器。阅读ReflectiveTypeAdapterFactory.java:222)。转换器。格森。GsonResponseBodyConverter。改装2时转换(GsonResponseBodyConverter.java:40)。转换器。格森。GsonResponseBodyConverter。convert(GsonResponseBodyConverter.java:27)

这是密码

API

@GET(Server.riceFields+"/{id}")
Call<Product> showRiceFields(@Path("id") int id);

模型

public class Product {

    private Status status;
    private RiceField riceField;

    public Status getStatus() {
        return status;
    }

    public void setStatus(Status status) {
        this.status = status;
    }

    public RiceField getRiceField() {
        return riceField;
    }

    public void setRiceField(RiceField riceField) {
        this.riceField = riceField;
    }


}

ProductsEndPoint.productsEndPoint().showRiceFields(id)
            .enqueue(new Callback<Product>() {
                @Override
                public void onResponse(Call<Product> call, Response<Product> response) {
                    if (response.isSuccessful()) {
                        RiceField riceField = response.body().getRiceField();
                        product = riceField;
                        setView(product);
                    }
                }

                @Override
                public void onFailure(Call<Product> call, Throwable t) {
                    t.printStackTrace();
                }
            });

json响应

{
    "status": {
        "code": 200,
        "message": "Succes",
        "description": "Data berhasil diambil"
    },
    "riceField": [
        {
            "id": 21,
            "title": "Nihil qui placeat tempora magnam aut omnis quae alias aliqua Molestiae culpa",
            "harga": 45,
            "luas": 20,
            "alamat": "Ratione cum et aliqu",
            "maps": "Quia aut ut dolores nisi hic necessitatibus asperiores odio dolores ut non voluptatum ipsum enim id",
            "deskripsi": "Voluptatum repellend",
            "sertifikasi": "sgb",
            "tipe": "jual",
            "created_at": "2021-06-08T08:11:00.000000Z",
            "updated_at": "2021-06-08T08:11:00.000000Z",
            "user_id": 2,
            "vestige_id": 2,
            "irrigation_id": 3,
            "region_id": 3,
            "verification_id": 2
        }
    ]
}

我已经在回调中添加了List,如下所示

BEGIN\u数组但为BEGIN\u对象

那我该怎么办?

谢谢抱歉我英语不好

解决方案:我应该在模型上为每个数组添加列表json


共有1个答案

裴心思
2023-03-14

您使用了错误的模型。根据您的json输出,您的模型必须是以下类

public class Output{

public Status status;
public List<RiceField> riceField;

}


public class RiceField {

public Integer id;
public String title;
public Integer harga;
public Integer luas;
public String alamat;
public String maps;
public String deskripsi;
public String sertifikasi;
public String tipe;
public String createdAt;
public String updatedAt;
public Integer userId;
public Integer vestigeId;
public Integer irrigationId;
public Integer regionId;
public Integer verificationId;

}


public class Status {

public Integer code;
public String message;
public String description;

}

欲了解更多信息,请使用此网站:json to java class

 类似资料:
  • 我正在尝试从XML文件中提取数据。将XML转换为JSON后,我无法访问数据。我正在用GSON解析数据。 这段代码给了我一个错误。 有什么建议吗?提前谢谢。 这是JSON内容: 这是以下类:

  • 我对GSON非常陌生, 几天前有人建议使用GSON,我在这里寻求一些帮助 我正在尝试分析此响应,但收到了所述错误。。 我只是得到了“状态”部分,但得到了错误。 对我的模特来说。

  • 我正在通过改型和RXAndroid与来自android的REST API进行交互,我遇到了一个问题。 当我向我的“api/users/{id}/{id}/classes”发送GET请求时,我的api会以用户类列表作出响应,如下所示: 我的界面如下所示: 我从片段中这样称呼它: 我的类对象以及getter和setter如下所示: gson不应该看到“类”:[]数组并从中解析对象吗?我做错了什么

  • 问题内容: 我在列表中仅收到一个项目时收到此错误。我在服务器端REST Web服务中使用Jersey,当List返回一个元素并且当我得到它时,我仅收到错误,但是当它包含多个元素时,它可以正常工作,这就是我的工作方式它: 为什么Jersey不发送包含一个项目的列表?这是球衣的虫子吗?有没有办法使它始终序列化为数组? 当Web服务返回0元素时,这是我的JSON数据: 当Web服务返回1元素时,这是我的

  • 我试图使用gson解析下面的json字符串,并且我得到了这个异常。 异常很明显,它期待一个对象(可能是Datapoint),但它遇到了一个数组。我确信是我的模型类导致了这个问题,但是我不明白我的模型类应该是什么样子才能解析json而不会失败。

  • 我正在使用Gson库保存和检索玩家对象的ArrayList。 但当运行此活动时,我会得到以下错误日志: 原因:java。lang.IllegalStateException:应为BEGIN_数组,但在第1行第2列路径处为BEGIN_对象$ 这段代码怎么了?