我每次都会收到这个错误:预期的begin_数组,但它是begin_对象。我不知道我是否需要添加反序列化程序或warrper类来进行改造,但我不知道如何以简单的方式来满足我所有项目的api json响应,下面是我的改造代码:
-
我的Json:
{
categoryDetails: [
{
id: "1",
categoryName: "Fashion"
},
{
id: "2",
categoryName: "Pets"
},
{
id: "3",
categoryName: "Sports"
},
{
id: "4",
categoryName: "Autre1"
},
{
id: "5",
categoryName: "Autre2"
}
]
}
我的源代码
import java.util.List;
import java.io.IOException;
import java.util.List;
import android.util.Log;
import retrofit.Call;
import retrofit.GsonConverterFactory;
import retrofit.Retrofit;
import retrofit.http.GET;
import retrofit.http.Path;
public class GitHubClient {
public static final String API_URL = "http://192.168.1.22";
public static class Category {
public final String categoryName;
public final int id;
public Category(String categoryName, int id) {
this.categoryName = categoryName;
this.id = id;
}
}
/*-----------------------------------------------------------------------------------------------------------*/
public interface QampaAPI {
@GET("/api/category")
Call<List<Category>> categoryDetailss();
}
/*-----------------------------------------------------------------------------------------------------------*/
public static void main(String... args) throws IOException {
Log.w("retrofit","main()");
// Create a very simple REST adapter which points the GitHub API.
Retrofit retrofit = new Retrofit.Builder()
.baseUrl(API_URL)
.addConverterFactory(GsonConverterFactory.create())
.build();
// Create an instance of our GitHub API interface.
QampaAPI apiCall = retrofit.create(QampaAPI.class);
// Create a call instance for looking up Retrofit categoryDetailss.
Call<List<Category>> call = apiCall.categoryDetailss();
// Fetch and print a list of the categoryDetailss to the library.
List<Category> Categorys = call.execute().body();
for (Category Category : Categorys) {
Log.w("retrofit",Category.categoryName + " (" + Category.id + ")");
}
}
}
你是对的,你需要一个包装类来处理外部对象-
static class CategoryDetails {
List<Category> categoryDetails;
// add getter and setter
}
更新您的接口以使用此对象-
public interface QampaAPI {
@GET("/api/category")
Call<CategoryDetails> categoryDetailss();
}
你的电话呢--
Call<CategoryDetails> call = apiCall.categoryDetailss();
CategoryDetails details = call.execute().body();
您需要从详细信息
对象内部访问该列表来迭代它。
根据错误状态,您的JSON响应与您创建的类不匹配。试试下面的POJO课程
public static class Category {
public final List<CatergoryItem> categoryItem;
public Category(List<CategoryItem> item) {
this.categoryItem = item;
}
}
class CategoryItem{
public String categoryName;
public int id;
//getter..setter
}
我做了一个功能:输入身份证号码,点击提交按钮,然后获得身份证的基本信息。 我使用的模型是: 我使用的改装界面: 当我输入正确的身份证号码时,一切正常。返回的结果是: 一切运作良好。 然而,当我输入不正确的身份证号码时,不好的事情发生了: 返回的结果是: 我怎样才能修复这些漏洞?
我不熟悉GSON和改装,这是我的输出模型(仅供参考结构), 这是我的输出 这是我的改装代码 应为BEGIN_对象,但为BEGIN_数组“ 我尝试过用List替换RootObject
我正在通过改型和RXAndroid与来自android的REST API进行交互,我遇到了一个问题。 当我向我的“api/users/{id}/{id}/classes”发送GET请求时,我的api会以用户类列表作出响应,如下所示: 我的界面如下所示: 我从片段中这样称呼它: 我的类对象以及getter和setter如下所示: gson不应该看到“类”:[]数组并从中解析对象吗?我做错了什么
我的Retrofit2调用出现以下异常: 学分类别:
我试图使用改型在一些解析的JSON上执行一些代码,但是我得到了一个非法的状态异常。以下是我的改装实例: Coinbase Pro API接口: 对服务器的调用请求(这是导致错误的原因): 最后是JSON解析成的类对象: 因此,根据我从类似文章中收集的信息,发生非法状态异常是因为我试图传递给Gson的对象的类型不正确。但我不明白这是怎么回事,因为我正在使用改装;GsonConverterFactor
问题内容: 我在列表中仅收到一个项目时收到此错误。我在服务器端REST Web服务中使用Jersey,当List返回一个元素并且当我得到它时,我仅收到错误,但是当它包含多个元素时,它可以正常工作,这就是我的工作方式它: 为什么Jersey不发送包含一个项目的列表?这是球衣的虫子吗?有没有办法使它始终序列化为数组? 当Web服务返回0元素时,这是我的JSON数据: 当Web服务返回1元素时,这是我的