在Retrofit中默认使用GSON解析JSON数据。使用GSON将json转换为POJO对象。它默认的解析格式是这样的:
{
"login": "basil2style",
"id": 1285344,
"avatar_url": "https://avatars.githubusercontent.com/u/1285344?v=3",
"gravatar_id": "123"}
那如果JSON数据是如下内容时,该怎么去解析呢?
{"data":[{"id":1,"divisionStr":"北京","name":"北京","lng":116.39564514160156,"lat":39.92998504638672,"pinyin":"beijing"},{"id":10,"divisionStr":"","name":"上海","lng":121.48789978027344,"lat":31.249162673950195,"pinyin":"shanghai"},{"id":20,"divisionStr":"","name":"广州","lng":113.30764770507812,"lat":23.12004852294922,"pinyin":"guangzhou"},{"id":30,"divisionStr":"","name":"深圳","lng":114.02597045898438,"lat":22.54605484008789,"pinyin":"shenzhen"}}
我们想把data所对应的值中的每一项取出来,然后转换成一个个的对象。
这时候我们需要使用GsonBuilder去重新定义json数据的解析方式。
GSON提供了TypeAdapter,可以在TypeAdapterFactory中定义解析逻辑。而该题中,我只需要获得data所对应得值即可,即数组对象。
private static class ItemTypeAdapterFactory implements TypeAdapterFactory {
@Override
public <T> TypeAdapter<T> create(Gson gson, TypeToken<T> type) {
final TypeAdapter<T> delegate = gson.getDelegateAdapter(this, type);
final TypeAdapter<JsonElement> elementTypeAdapter = gson.getAdapter(JsonElement.class);
return new TypeAdapter<T>() {
@Override
public void write(JsonWriter out, T value) throws IOException {
delegate.write(out, value);
}
//当获取了http请求的数据后,获得data所对应的值
@Override
public T read(JsonReader in) throws IOException {
JsonElement jsonElement = elementTypeAdapter.read(in);
if (jsonElement.isJsonObject()) {
JsonObject jsonObject = jsonElement.getAsJsonObject();
if (jsonObject.has("data")) {
jsonElement = jsonObject.get("data");
}
}
return delegate.fromJsonTree(jsonElement);
}
}.nullSafe();
}
}
相关推荐
本教程将重点介绍如何使用Gson库在Java环境中解析JSON数据。 Gson是Google提供的一款开源库,它能够将Java对象转换为对应的JSON字符串,也可以将JSON数据反序列化为Java对象。这对于处理JSON数据非常方便。在本示例...
本文将详细介绍如何在Eclipse和Android Studio环境下使用Gson库来解析Json数据。 首先,我们来看Eclipse下的Gson使用示例。在Eclipse中,你需要先引入Gson库。这可以通过在项目构建路径中添加Gson的jar文件完成,...
本篇文章将详细介绍如何在Android应用中使用Gson库解析JSON数据,以便更好地理解这一关键知识点。 首先,我们要了解JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,易于人阅读和编写,同时也易于...
3. 使用GSON解析JSON: - 创建Java对象:首先,你需要创建对应的Java类,这些类的字段名应与JSON中的键对应。 - 创建Gson实例:`Gson gson = new Gson();` - 将JSON字符串转换为Java对象:`MyObject obj = gson....
当我们调用`Retrofit.create(ApiService.class)`时,Retrofit会根据`getUser`方法的返回类型`Call<User>`使用Gson转换器将JSON数据转换为`User`对象。 在实际使用中,我们还需要处理网络请求的异步性质。这通常通过...
在Retrofit中,Gson通常作为转换器(Converter)使用,负责处理网络响应数据的解析。 RxJava是一个响应式编程库,它提供了异步编程的解决方案,并通过Observables(观察者)和Subscribers(订阅者)的概念来处理...
总结来说,Retrofit与Gson的结合使用使得Android开发中的网络请求和数据解析变得简单而高效。它们降低了代码的复杂性,提高了开发效率,同时也提升了应用程序的性能。在实际项目中,开发者可以充分利用这两款库的...
总结,Android中解析JSON数据涉及的关键知识点包括JSON的基本结构、Gson库的使用、JSONObject和JSONArray的操作、Volley库的网络请求以及Retrofit框架的使用。这些工具和技术使得Android开发者能够高效地处理服务器...
使用Gson解析JSON数据非常方便,例如: ```java String jsonString = "{\"name\":\"John\",\"age\":30,\"city\":\"New York\"}"; Gson gson = new Gson(); MyObject obj = gson.fromJson(jsonString, MyObject.class...
// 使用Gson解析JSON到Person对象 Gson gson = new Gson(); Person person = gson.fromJson(jsonString, Person.class); ``` ### 3. FastJson库 阿里巴巴的FastJson库以其高效著称,它提供了一种更简洁的方式来...
本教程聚焦于老罗讲解的Android解析JSON数据的源码分析,这对于深入理解JSON处理以及优化应用程序性能至关重要。 首先,我们需要了解JSON的基本结构。JSON是一种基于键值对的格式,数据以键值对的形式存储,如{"key...
Retrofit利用Gson解析JSON数据,通过OkHttp进行网络通信,而Okio则优化了底层的数据读写。这样的组合使得开发者能更方便地构建网络请求,同时享受到高效、稳定和灵活的网络通信体验。 在实际项目中,开发者可以使用...
在“android解析json数据)第一集JsonProject.zip”这个压缩包中,我们很可能会找到一个实战项目,展示了如何在Android应用中处理JSON数据。通过这个项目,我们可以学习到以下关键知识点: 1. JSON基本结构:JSON...
例如,使用OkHttp发送GET请求获取JSON数据,然后使用Gson解析: ```java OkHttpClient client = new OkHttpClient(); Request request = new Request.Builder() .url("http://your-api-url") .build(); client....
总的来说,"android异步远程解析json数据绑定到ListView上"这一过程涵盖了许多Android开发的核心技术,包括异步编程、网络请求、JSON解析、数据绑定和异常处理。理解并熟练掌握这些知识点对于提升Android应用的性能...
本教程将详细介绍如何在Android中解析JSON数据。 1. JSON基本结构: JSON由键值对组成,数据以大括号`{}`表示对象,数组用方括号`[]`表示。键值对中,键用引号包围,如`"key"`,值可以是字符串、数字、布尔值、...
它可以轻松地将Java对象转换成JSON字符串,也可以将JSON字符串解析为相应的Java对象,这对于处理服务器返回的JSON数据至关重要。 **ConstraintLayout** 是Android Studio中的一款布局工具,它提供了更强大的界面...
四、使用Gson库解析JSON Gson库提供了更简洁的方法来序列化和反序列化JSON。首先,需要创建对应的Java对象。 ```java public class Person { private String name; private int age; private String city; // ...
然后,我们可以使用`Gson.fromJson()`方法将JSON字符串解析为Java对象: ```java String jsonString = "{\"name\":\"John\", \"age\":30}"; Gson gson = new Gson(); User user = gson.fromJson(jsonString, User....
- **gson-2.0.jar**:这是Gson库的独立版本,与Retrofit的Converter-Gson一起使用,处理JSON数据。 - **butterknife-plugin.jar**:ButterKnife是一个视图注入库,简化了Android开发中的UI组件绑定。 以上就是...