gpt4 book ai didi

android - 用gson反序列化json

转载 作者:行者123 更新时间:2023-11-29 19:33:28 26 4
gpt4 key购买 nike

我正在尝试将 json 从 worldbank.com 反序列化为 pojo,但没有成功。 json 看起来像:[{"page":1,"pages":7,"per_page":"50","total":304},[{"id":"ABW","iso2Code":"AW","name":"Aruba","re​​gion":{"id":"LCN","value":"拉丁美洲和加勒比地区"},

可以通过以下方式找到:http://api.worldbank.org/countries/?format=json

我遇到了 gson 告诉我的问题:WorldBankDemo:com.google.gson.JsonSyntaxException:java.lang.IllegalStateException:应为 BEGIN_OBJECT 但在第 1 行第 52 列路径 $[1]

处为 BEGIN_ARRAY

关于我如何解决这个问题的任何线索?最好不要从 gson 更改,因为这是我正在使用的网络库使用的库(改造)

 WorldBankDataService service = ServiceFactory.createRetrofitService(WorldBankDataService.class, WorldBankDataService.SERVICE_ENDPOINT);
service.getCountries()
.subscribeOn(Schedulers.newThread())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(new Subscriber<WorldBank[]>() {
@Override
public final void onCompleted() {
// do nothing
}

@Override
public final void onError(Throwable e) {
Log.e("WorldBankDemo", e.getMessage());
}

@Override
public final void onNext(WorldBank[] response) {
Log.d("TAG", "resp: "+response);
//mCardAdapter.addData(response);
}
});


public class ServiceFactory {
/**
* Creates a retrofit service from an arbitrary class (clazz)
* @param clazz Java interface of the retrofit service
* @param endPoint REST endpoint url
* @return retrofit service with defined endpoint
*/
public static <T> T createRetrofitService(final Class<T> clazz, final
String endPoint) {
final RestAdapter restAdapter = new RestAdapter.Builder()
.setEndpoint(endPoint)
.setLogLevel(RestAdapter.LogLevel.FULL)
.build();
T service = restAdapter.create(clazz);

return service;
}
}

public class WorldBank {
int page;
int pages;
String per_page;
int total;
//Country[] countrys;
}

最佳答案

JSON 构造不好(尤其是自动解析),Array 可以包含对象或数组,但两者不能在同一级别,在上面的 JSON 结构中,它以 Array 开头,第一个元素是一个对象,第二个元素是一个数组,所以不建议将这种 JSON 结构用于自动解析,如果你想继续使用相同的 JSON 响应,你可以进行手动解析或更改响应结构。

关于android - 用gson反序列化json,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39573613/

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