Android 改型-获取原始非JSON数组
我第一次使用Reformation2,但在获取非JSON格式的简单数组时遇到了一个问题 错误:java.lang.IllegalStateException:应为BEGIN_对象,但在第1行第3列路径$[0]处为字符串 这意味着它不是JSON对象,因为它不是以{ 我尝试添加ScalarsConverter,但它似乎不起作用 Api: 接口:Android 改型-获取原始非JSON数组,android,json,http,retrofit,Android,Json,Http,Retrofit,我第一次使用Reformation2,但在获取非JSON格式的简单数组时遇到了一个问题 错误:java.lang.IllegalStateException:应为BEGIN_对象,但在第1行第3列路径$[0]处为字符串 这意味着它不是JSON对象,因为它不是以{ 我尝试添加ScalarsConverter,但它似乎不起作用 Api: 接口: public interface Retro_coins { @GET("api/v1/coins") Call<List<Co
public interface Retro_coins {
@GET("api/v1/coins")
Call<List<Coinlist>> getCoinlist();
}
改装初始化和呼叫:
String API_BASE_URL = "https://chasing-coins.com/";
OkHttpClient.Builder httpClient = new OkHttpClient.Builder();
Retrofit.Builder builder = new Retrofit.Builder()
.baseUrl(API_BASE_URL)
.addConverterFactory(GsonConverterFactory.create())
.addConverterFactory(ScalarsConverterFactory.create())
;
Retrofit retrofit = builder.client(httpClient.build()).build();
Retro_coins client = retrofit.create(Retro_coins.class);
// Fetch list
Call<List<Coinlist>> call =
client.getCoinlist();
// Execute the call asynchronously. Get a positive or negative callback.
call.enqueue(new Callback<List<Coinlist>>() {
@Override
public void onResponse(Call<List<Coinlist>> call, Response<List<Coinlist>> response) {
// The network call was a success and we got a response
Log.w("Yes", response.toString());
}
@Override
public void onFailure(Call<List<Coinlist>> call, Throwable t) {
Log.w("no", t.toString());
}
});
谢谢!当您使用private List coinlist;时,Gson希望该对象
{
"coinlist":"[]"
}
你所提供的只是
["String","String","String"]
此外,当您使用Call时,您希望数据
[
{
"coinlist":"[]"
}
]
只需将您的调用从一个调用更改为另一个调用。这将解决您的问题。如果需要更多说明,请告诉我您的请求返回字符串。因此,您需要将响应更改为字符串或需要将请求调用更改为字符串。这是因为您的对象错误。如果您不使用JSON您不需要addConverterFactoryGsonConverterFactory.create使用您希望的格式伟大的答案和解释!
[
{
"coinlist":"[]"
}
]