Android 第2步,获取数组,但在recyclerview中解析为对象

Android 第2步,获取数组,但在recyclerview中解析为对象,android,android-recyclerview,retrofit2,Android,Android Recyclerview,Retrofit2,我是第二代改型新手,尝试用数组解析URL,但它尝试将其解析为对象,所以我得到了这条消息。我真的不知道问题到底出在哪里 java.lang.IllegalStateException: Expected BEGIN_ARRAY but was BEGIN_OBJECT at line 1 column 2 path $ 我一直在学习这个教程 这是我的活动 public class WordActivity extends AppCompatActivity { private ListView

我是第二代改型新手,尝试用数组解析URL,但它尝试将其解析为对象,所以我得到了这条消息。我真的不知道问题到底出在哪里

java.lang.IllegalStateException: Expected BEGIN_ARRAY but was BEGIN_OBJECT at line 1 column 2 path $
我一直在学习这个教程

这是我的活动

public class WordActivity extends AppCompatActivity {
private ListView listView;
private TextView textView;
private RecyclerView recyclerView;
private ArrayList<WordRepo> data;
private WordRecyclerAdapter adapter;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.word_info_layout);
    Toolbar myToolbar = (Toolbar) findViewById(R.id.my_toolbar);
    setSupportActionBar(myToolbar);
    getSupportActionBar().setTitle("");
    getSupportActionBar().setDisplayHomeAsUpEnabled(true);
    myToolbar.setTitle(Html.fromHtml("<font color='#272d85'>Svenska slangord </font>"));

    //textView = (TextView) findViewById(R.id.textView);
    //listView = (ListView) findViewById(R.id.listView);



    Bundle bundle = this.getIntent().getExtras();
    if (bundle != null) {

        if (bundle.containsKey("posID")) {
            int posid = bundle.getInt("posID");
            getRetro(posid + 1);
        }
        FloatingActionButton fab = (FloatingActionButton) findViewById(R.id.fab);
        fab.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                Snackbar.make(view, "Replace with your own action", Snackbar.LENGTH_LONG)
                        .setAction("Action", null).show();
            }
        });
    }
}

public void getRetro(int categoryID) {

    WordInterface client = ApiClient.getClient().create(WordInterface.class);
    Call<JSONResponse> call = client.getJSON(categoryID);
    call.enqueue(new Callback<JSONResponse>() {

        @Override
        public void onResponse(Call<JSONResponse> call, Response<JSONResponse> response) {
            recyclerView = (RecyclerView) findViewById(R.id.recycler_view_words);
            recyclerView.setHasFixedSize(true);
            RecyclerView.LayoutManager layoutManager = new LinearLayoutManager(getApplicationContext());
            recyclerView.setLayoutManager(layoutManager);

            JSONResponse jsonResponse = response.body();
            data = new ArrayList<>(Arrays.asList(jsonResponse.getList()));
            adapter = new WordRecyclerAdapter(data);
            recyclerView.setAdapter(adapter);
        }

        @Override
        public void onFailure(Call<JSONResponse> call, Throwable t) {
            Toast.makeText(WordActivity.this, "error" + t, Toast.LENGTH_LONG).show();
        }

    });
}
JSONResponse类

public class JSONResponse {

private WordRepo[] words;

public WordRepo[] getList() {
    return words;
}

您只需要将响应设置为您自己的对象的ArrayList。 我强烈建议您定义类以获取数据

就我而言

@Override
public void onResponse(Call<ResponseRidingLogs> call, Response<ResponseRidingLogs> response) {
    if(response.body().header.result_code != 0) {
        // Error handling
    } else { 
        ResponseRidingLogs responseRidingLogs = response.body();
        // I have my own header and body: inside body there is arraylist
       List<yourClass> = responseRidingLogs.body();
       //...
    }
    //...
}

public class ResponseRidingLogs {
    public HKRheader header;
    public List<RidingLog> body;
}
@覆盖
公共void onResponse(调用、响应){
if(response.body().header.result_code!=0){
//错误处理
}否则{
ResponseRidingLogs ResponseRidingLogs=response.body();
//我有自己的标题和正文:正文中有arraylist
List=responseRidingLogs.body();
//...
}
//...
}
公共类响应日志{
公共阅读器标题;
公共名单机构;
}
是否在自己的协议中添加自己的头和主体并不重要。
如果使用类定义进行JSON通信,则无需查看JSON协议内部。您只需与server developer定义“同一类”。

访问此链接。我可以帮你。
public class WordRepo {
private String name;
private String description;

public String getDescription() {
    return description;
}

public String getWords() {
    return name;
}


}
public class JSONResponse {

private WordRepo[] words;

public WordRepo[] getList() {
    return words;
}
@Override
public void onResponse(Call<ResponseRidingLogs> call, Response<ResponseRidingLogs> response) {
    if(response.body().header.result_code != 0) {
        // Error handling
    } else { 
        ResponseRidingLogs responseRidingLogs = response.body();
        // I have my own header and body: inside body there is arraylist
       List<yourClass> = responseRidingLogs.body();
       //...
    }
    //...
}

public class ResponseRidingLogs {
    public HKRheader header;
    public List<RidingLog> body;
}