gpt4 book ai didi

java - 如何将 BEGIN_OBJECT 转换为 BEGIN_ARRAY

转载 作者:行者123 更新时间:2023-12-02 10:22:52 26 4
gpt4 key购买 nike

我是java初学者,我需要一些帮助,我看过很多关于的帖子,但没有解决他们的问题

我有来自 url 的 json 对象,就像这样

{
'history':[{
'id':2,
'name':'irine'},
{
'id':3,
'name':'karine'
}]
}

但我需要

[
{
'id':2,
'name':'irine'},
{
'id':3,
'name':'karine'}
]

我的ApiClient.java

公共(public)类 ApiClient {

public static final String BASE_URL = "http://192.168.150.100";
public static Retrofit retrofit;


public static Retrofit getApiClient(final String authToken){

HttpLoggingInterceptor interceptor = new HttpLoggingInterceptor();
interceptor.setLevel(HttpLoggingInterceptor.Level.BODY);
OkHttpClient httpClient = new OkHttpClient.Builder()
.addInterceptor(new Interceptor() {
@Override
public Response intercept(Chain chain) throws IOException {
Request.Builder ongoing = chain.request().newBuilder();
ongoing.addHeader("Accept", "application/json;");
ongoing.addHeader("Authorization", authToken);

return chain.proceed(ongoing.build());
}
})//.addInterceptor(interceptor)
.build();
if (retrofit==null){
retrofit = new Retrofit.Builder()
.baseUrl(BASE_URL)
.client(httpClient)
.addConverterFactory(GsonConverterFactory.create())
.build();
}
return retrofit;
}

}

从 url 获取响应

call.enqueue(new Callback<List<Contact>>() {
@Override
public void onResponse(Call<List<Contact>> call, Response<List<Contact>> response) {
progressBar.setVisibility(View.GONE);

contacts=response.body();

if(contacts==null)
Snackbar.make(findViewById(R.id.lt_search), "Nothing found",Snackbar.LENGTH_LONG).show();
adapter = new Adapter(contacts, SearchActivity.this);
recyclerView.setAdapter(adapter);
adapter.notifyDataSetChanged();
}

@Override
public void onFailure(Call<List<Contact>> call, Throwable t) {
progressBar.setVisibility(View.GONE);
Log.d("GHaa ka sk aksjdk j", contacts.toString());
Toast.makeText(SearchActivity.this, "Error\n"+t.toString(), Toast.LENGTH_LONG).show();
}
});

如何将对象转换为数组或从对象中清除单词“历史”?

最佳答案

您为 API 响应提供了错误的类。您收到 list反对string key这可能会改变(未知)。因此,您必须使用 HashMap 。 API响应的形式为HashMap<String,<List<Contact>>> 。因此在代码中,您必须使用 Callback<HashMap<String,List<Contact>>>()而不是Callback<List<Contact>>() .

然后从 HashMap您可以轻松获得list使用hashmap.get('key') 。在你的情况下,hashmap.get('history') .

关于java - 如何将 BEGIN_OBJECT 转换为 BEGIN_ARRAY,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54197062/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com