我正在尝试从网络服务获取一个 JSON 列表。服务器返回的 JSON 字符串如下所示:
所以,返回的JSON编码很好...我认为可能是由于Retrofit读取响应的方式所致。我正在使用Retrofit-2.0.2、Gson-2.6.1、Converter-Gson-2.0.2、Okhttp-3.2.0。可以帮忙吗?谢谢。
[{"categoryName":"政治"},{"categoryName":"经济"},{"categoryName":"文化"},{"categoryName":"体育"}]
问题在于如何将其转换成 POJO。特殊字符(í)显示为“Pol�tica”。
这是 Retrofit 调用函数: @GET("categories")
public Call<List<CategoryPojo>> getCategorias(@Query("sitename") String site)
这是回调函数:
Call<List<CategoryPojo>> call = restservice.getApiService().getCategorias(medio);
try {
call.enqueue(new Callback<List<CategoryPojo>>() {
@Override
public void onResponse(Call<List<CategoryPojo>> call, Response<List<CategoryPojo>> response) {
List<CategoryPojo> categories = response.body();
if (listener != null)
listener.onDataLoaded(categories);
}
@Override
public void onFailure(Call<List<CategoryPojo>> call, Throwable throwable) {
Log.e("Retrofit Error", throwable.getMessage());
}
});
这是一个POJO:
public class CategoryPojo implements Serializable{
public CategoryPojo() { }
@SerializedName("categoryName")
private String name;
public String getName()
{
return this.name;
}
}
Web服务请求的结果(在浏览器中输出)为:
[{"categoryName":"Política"},{"categoryName":"Economía"},{"categoryName":"Cultura"},{"categoryName":"Deportes"},{"categoryName":"Salud"},{"categoryName":"Ciencia y Tecnología"},{"categoryName":"Medio Ambiente"},{"categoryName":"Medios"},{"categoryName":"Militar e Inteligencia"},{"categoryName":"Sociedad"}]
所以,返回的JSON编码很好...我认为可能是由于Retrofit读取响应的方式所致。我正在使用Retrofit-2.0.2、Gson-2.6.1、Converter-Gson-2.0.2、Okhttp-3.2.0。可以帮忙吗?谢谢。
it's appear like "Pol�tica"
是不是来自你的 logcat。如果你在浏览器中尝试请求,它会返回 Política,对吗? - Daniel