`
ch_kexin
  • 浏览: 902613 次
  • 性别: Icon_minigender_2
  • 来自: 青岛
社区版块
存档分类
最新评论

如何统一解析JSON数据,使用Gson结合泛型类灵活,让您一劳永逸

 
阅读更多

作为一名android 客户端开发人员,学会解决问题和总结问题的习惯是很重要的。。。那么我们app接口数据返回通常是以下格式:

{"code":"0000","data": {"code":"0002","resultData":null,"resultMsg":"用户Token过期,请重新登入","error":[],"msg":""}

把以上的json数据放在线JSON字符串转Java实体类(JavaBean)网址(http://www.atool.org/json2javabean.php)上生成下面的Java实体类:

 

public class JsonRootBean {  
  
    private String code;  
    private Data data;  
    private List<String> error;  
    private String msg;  
    public void setCode(String code) {  
         this.code = code;  
     }  
     public String getCode() {  
         return code;  
     }  
  
    public void setData(Data data) {  
         this.data = data;  
     }  
     public Data getData() {  
         return data;  
     }  
  
    public void setError(List<String> error) {  
         this.error = error;  
     }  
     public List<String> getError() {  
         return error;  
     }  
  
    public void setMsg(String msg) {  
         this.msg = msg;  
     }  
     public String getMsg() {  
         return msg;  
     }  
  
}  

 我们知道,所有的接口返回的数据格式都是一样的,就拿上面的返回结果来说吧,返回的Json字符串中只是"data": {"code":"0002","resultData":null,"resultMsg":"用户Token过期,请重新登入"},这个

 

 

data中的“resultData”中的返回数据不一样,其他数据格式都是一样的,所以我们这里使用泛型Java实体类,一次解析全部搞定!

把上面的Java实体类中的 Data成员变量改为:

public class JsonRootBean<T> {  
  
    private Data<T> data;  
  
   public Data<T> getData() {  
        return data;  
    }  
  public void setData(Data<T> data) {  
        this.data = data;  
    }  
  
}  

 

 

而其中的Data类为:

public class Data<T> {  
  
    private String code;  
    private T resultData;  
    private String resultMsg;  
  
    public String getCode() {  
        return code;  
    }  
  
    public void setCode(String code) {  
        this.code = code;  
    }  
  
    public T getResultData() {  
        return resultData;  
    }  
  
    public void setResultData(T resultData) {  
        this.resultData = resultData;  
    }  
  
    public String getResultMsg() {  
        return resultMsg;  
    }  
  
    public void setResultMsg(String resultMsg) {  
        this.resultMsg = resultMsg;  
    }  
}  

 那我们在解析的时候,对返回的Json串,作如下处理:

 

1、如果返回的字符串resultData直接为 {“对象”},处理如下:
  Type
  jsonType = new TypeToken<JsonRootBean<TripResultData>>() {}.getType();
JsonRootBean<TripResultData> rootBean = new Gson().fromJson(jsonStr, jsonType);
然后根据  rootBean的get方法,依次获取相应的data值 ,然后根据泛型 T 为TripResultData的具体实体类来获取具体的数据;
2、如果返回的字符串resultData直接为
数组 [{“对象”}],处理如下:

Type  jsonType = new TypeToken<JsonRootBean<TripResultData>>() {}.getType();

JsonRootBean<List<TripResultData>>   rootBean =  new Gson().fromJson(jsonStr, jsonType); 其实实体类泛型写在列表里面 List<T>;

其实这个时候,所有的数据都已经解析到这个 rootBean里面了,你就可以自己根据自己写的的方法获取。

 

 

 

分享到:
评论

相关推荐

    gson解析泛型和将泛型转为json字符串

    在Java编程中,Gson库是一个非常常用的工具,它由Google提供,用于在Java对象和JSON数据之间进行互相转换。本文将深入探讨如何使用Gson处理泛型,并将其转换为JSON字符串。 首先,理解泛型在Java中的作用是至关重要...

    Gson解析json数据

    在本文中,我们将深入探讨如何使用Gson解析JSON数据,包括处理简单JSON和复杂的JSON结构。 首先,我们要了解JSON的基本概念。JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,易于人阅读和编写,...

    Gson解析复杂Json实例,超简单

    本教程将深入探讨如何使用Gson库解析复杂的JSON实例,让你只需寥寥几行代码就能轻松处理JSON解析问题。 ### Gson库简介 Gson库的核心功能是将Java对象(如自定义类)转换为JSON字符串,反之亦然。这个库非常直观,...

    使用Gson解析Json数据

    1、生成Json数据 2、使用Gson解析Json数据(单个json对象、json数组和json对象内嵌json数组) // 这里有两篇好心人的博文,有详细的讲解 http://www.jb51.net/article/32547.htm ...

    Android Studio下使用Google Gson解析Json数据示例

    2. 使用Gson实例解析JSON:有了JSON字符串和对应的数据模型类,我们可以使用Gson的fromJson()方法将JSON转换为Java对象。 ```java String jsonString = "{\"name\":\"John Doe\",\"age\":30,\"city\":\"New York\"}...

    使用Gson解析json数据

    本教程将重点介绍如何使用Gson库在Java环境中解析JSON数据。 Gson是Google提供的一款开源库,它能够将Java对象转换为对应的JSON字符串,也可以将JSON数据反序列化为Java对象。这对于处理JSON数据非常方便。在本示例...

    Gson解析Json 泛型

    Gson解析json,实现泛型解析数据,根据用户传入的类型,解析称用户需要的,Common \CommonList 里面的status message data相关的约定可以更具开发者与服务器的约定修改

    解析json的gson

    在Java中,你可以定义一个类来表示你的数据结构,然后使用Gson库将其转换为JSON字符串: ```java public class Person { private String name; private int age; // getters and setters } Person person = ...

    通过Gson解析Json文件

    使用Gson,我们可以轻松地解析JSON文件,将其中的数据映射到Java对象上。 要使用Gson解析JSON文件,首先需要在项目中引入Gson库。如果你的项目是Maven项目,可以在pom.xml文件中添加以下依赖: ```xml &lt;groupId&gt;...

    使用gson解析json

    本篇文章将深入探讨如何使用Gson库解析JSON。 一、Gson简介 Gson是Google提供的一个开源项目,它能够将Java对象转换成JSON格式的字符串,同时也可以将JSON数据转换回Java对象。这种转换过程非常方便,大大简化了...

    Android使用Kotlin利用Gson解析多层嵌套Json数据

    Android使用Kotlin利用Gson解析多层嵌套Json数据

    Gson解析复杂json数据

    下面我们将讨论如何使用 Gson 解析复杂的 JSON 数据。 从给定的 JSON 数据可以看到,这是一个复杂的 JSON 对象,它包含多个层次的嵌套结构。为了解析这个 JSON 对象,我们需要使用 Gson 库提供的功能。 首先,我们...

    Json解析Gson解析

    1. 本地解析:可以从本地文件读取JSON数据,然后使用Gson进行解析。例如,可以创建一个`readJsonFile()`方法,读取文件内容并转换为JSON字符串,再进一步解析。 2. 网络解析:在网络请求中,通常会接收到JSON格式的...

    android之json和gson数据解析最完整的代码例子(包括各种样式的json数据)

    JSON(JavaScript Object Notation)和Gson是Android开发中常用的数据序列化和反序列化工具,...以上就是关于“Android之json和gson数据解析最完整的代码例子”的详细介绍,希望对您在学习和使用JSON及Gson时有所帮助。

    JSON、GSON解析json

    可以创建相应的Java类如`User`、`Friend`,然后使用GSON的`fromJson`方法解析。 5. Android HTTP请求:在Android中,我们可以使用HttpURLConnection、Volley、OkHttp或Retrofit等库进行网络请求,获取JSON数据。...

    Gson解析(List和Map)格式json数据 - CSDN博客1

    【Gson解析JSON数据】 Gson是Google提供的一款强大的Java库,用于在Java对象和JSON数据之间进行映射。它可以将任何Java对象转换为它的JSON表示形式,反之亦然。在处理JSON数据时,我们经常遇到两种常见的数据结构:...

    android中gson解析json数据例程

    本篇文章将详细介绍如何在Android应用中使用Gson库解析JSON数据,以便更好地理解这一关键知识点。 首先,我们要了解JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,易于人阅读和编写,同时也易于...

    Gson解析JSON数据的入门级源码

    这个“Gson解析JSON数据的入门级源码”应该包含了一些基础示例,帮助初学者理解如何使用Gson进行JSON操作。现在,我们将深入探讨Gson库的关键特性和使用方法。 **Gson库的引入** 首先,要使用Gson,你需要在项目中...

    android中使用gson来创建和解析json数据

    本文将详细介绍如何在Android中使用Gson来创建和解析JSON数据。 首先,你需要在项目中引入Gson库。如果你的项目使用的是Gradle构建系统,可以在`build.gradle`文件的dependencies块中添加以下依赖: ```groovy ...

Global site tag (gtag.js) - Google Analytics