Android解析JSON格式数据的两种方式(JSONObject和Gson)

下面是Android解析JSON格式数据的两种方式的完整攻略。

一、使用JSONObject解析JSON数据

1. 引入相关依赖

下面是需要引入的三个依赖:

implementation 'com.android.volley:volley:x.x.x'
implementation 'org.json:json:x.x.x'

2. 创建一个JSON请求

创建一个JSON请求需要一个URL地址和一个Response.Listener<JSONObject>类型的监听器。当请求成功时,Volley会调用这个监听器并返回一个JSON对象。

String url = "https://jsonplaceholder.typicode.com/todos/1";
JsonObjectRequest jsonObjectRequest = new JsonObjectRequest(
    Request.Method.GET ,
    url ,
    null ,
    new Response.Listener<JSONObject>() {
        @Override
        public void onResponse(JSONObject response) {
            // 处理返回的JSON数据
        }
    } ,
    null
);

3. 处理返回的JSON数据

当请求成功时,Volley会调用上面创建的监听器。在这个监听器的onResponse方法中,我们就可以处理返回的JSON数据了。

// JSON数据结构:
// {
//   "userId": 1,
//   "id": 1,
//   "title": "delectus aut autem",
//   "completed": false
// }

try {
    int userId = response.getInt("userId");
    int id = response.getInt("id");
    String title = response.getString("title");
    boolean completed = response.getBoolean("completed");
    Log.d("MainActivity", "userId: " + userId);
    Log.d("MainActivity", "id: " + id);
    Log.d("MainActivity", "title: " + title);
    Log.d("MainActivity", "completed: " + completed);
} catch (JSONException e) {
    e.printStackTrace();
}

实例演示

String url = "https://jsonplaceholder.typicode.com/todos/1";
JsonObjectRequest jsonObjectRequest = new JsonObjectRequest(
    Request.Method.GET ,
    url ,
    null ,
    new Response.Listener<JSONObject>() {
        @Override
        public void onResponse(JSONObject response) {
            try {
                int userId = response.getInt("userId");
                int id = response.getInt("id");
                String title = response.getString("title");
                boolean completed = response.getBoolean("completed");
                Log.d("MainActivity", "userId: " + userId);
                Log.d("MainActivity", "id: " + id);
                Log.d("MainActivity", "title: " + title);
                Log.d("MainActivity", "completed: " + completed);
            } catch (JSONException e) {
                e.printStackTrace();
            }
        }
    } ,
    null
);

RequestQueue queue = Volley.newRequestQueue(this);
queue.add(jsonObjectRequest);

二、使用Gson解析JSON数据

1. 引入相关依赖

使用Gson解析JSON数据需要引入以下依赖:

implementation 'com.google.code.gson:gson:x.x.x'

2. 创建一个JSON请求

创建JSON请求的过程同上面所讲的JSONObject解析JSON数据的方式。

3. 解析返回的JSON数据

在创建JSON请求时,我们需要传入一个Response.Listener<JSONObject>类型的监听器。但是,在使用Gson解析JSON数据时,我们需要传入一个Response.Listener<T>类型的监听器(其中T表示我们定义的Java类)。

String url = "https://jsonplaceholder.typicode.com/todos/1";
GsonRequest<Todo> gsonRequest = new GsonRequest<Todo>(
    Request.Method.GET ,
    url ,
    Todo.class ,
    new Response.Listener<Todo>() {
        @Override
        public void onResponse(Todo response) {
            // 处理返回的JSON数据
        }
    } ,
    null
);

我们可以先定义一个与返回的JSON数据结构对应的Java类。在上面的代码中,我们传入的是Todo.class,即我们定义的Todo类。

public class Todo {
    private int userId;
    private int id;
    private String title;
    private boolean completed;
    // 具体的getters和setters省略
}

然后在监听器的onResponse方法中,我们就可以直接使用返回的Todo对象了。

Todo todo = response;
Log.d("MainActivity", "userId: " + todo.getUserId());
Log.d("MainActivity", "id: " + todo.getId());
Log.d("MainActivity", "title: " + todo.getTitle());
Log.d("MainActivity", "completed: " + todo.isCompleted());

实例演示

String url = "https://jsonplaceholder.typicode.com/todos/1";
GsonRequest<Todo> gsonRequest = new GsonRequest<Todo>(
    Request.Method.GET ,
    url ,
    Todo.class ,
    new Response.Listener<Todo>() {
        @Override
        public void onResponse(Todo response) {
            Todo todo = response;
            Log.d("MainActivity", "userId: " + todo.getUserId());
            Log.d("MainActivity", "id: " + todo.getId());
            Log.d("MainActivity", "title: " + todo.getTitle());
            Log.d("MainActivity", "completed: " + todo.isCompleted());
        }
    } ,
    null
);

RequestQueue queue = Volley.newRequestQueue(this);
queue.add(gsonRequest);

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Android解析JSON格式数据的两种方式(JSONObject和Gson) - Python技术站

(0)
上一篇 2023年5月26日
下一篇 2023年5月26日

相关文章

  • SpringBoot自动配置特点与原理详细分析

    一、SpringBoot自动配置特点与原理分析 自动配置原理 SpringBoot的自动配置背后的原理是,通过条件注解来根据已有的bean、属性和类路径等来做出判断,自动调整项目的配置。 自动配置特点 约定优于配置:SpringBoot的自动配置遵循约定优于配置的原则,框架尽量避免使用XML等外置文件进行配置,采用内置默认配置的方式进行配置。 基于条件注解:…

    Java 2023年5月15日
    00
  • Java线程安全性的作用是什么?

    作为一个Java网站的作者,我们需要讲解Java线程安全性的作用。Java线程安全性的作用是确保在多个线程同时访问同一资源的情况下,不会发生数据错误或竞争条件。更具体地说,线程安全是指在多个线程同时执行的情况下,程序的行为仍然是正确的。在Java中,我们可以使用不同的机制来实现线程安全,包括同步方法、同步块、volatile变量和原子类等等。 其中,同步方法…

    Java 2023年5月11日
    00
  • springmvc图片上传及json数据转换过程详解

    一、springmvc图片上传过程详解 1.在pom.xml文件中添加以下依赖 <dependency> <groupId>commons-fileupload</groupId> <artifactId>commons-fileupload</artifactId> <version>…

    Java 2023年5月26日
    00
  • Nginx为Tomcat服务器作反向代理的配置教程

    下面是关于如何配置Nginx作为Tomcat反向代理的攻略: 步骤1:安装Nginx和Tomcat 首先,你需要在服务器上安装两个软件:Nginx 和 Tomcat。 Nginx可以通过源码编译或者使用包管理器安装。在 Ubuntu 上,你可以通过以下命令安装: sudo apt-get update sudo apt-get install nginx T…

    Java 2023年5月20日
    00
  • Java MyBatis框架环境搭建详解

    Java MyBatis框架环境搭建详解 1. 环境要求 在开始搭建MyBatis框架之前,需要确保计算机已经安装以下软件: JDK(Java Development Kit)— 最好是JDK8及以上版本。 Eclipse(或者其他的Java IDE)— 推荐使用最新版本。 Maven(或者其他的构建工具)— 推荐使用最新版本。 MySQL(或者其他关系型数…

    Java 2023年6月2日
    00
  • JAVA JVM运行时数据区详解

    让我来详细讲解一下“Java JVM运行时数据区”的完整攻略吧。 什么是Java JVM运行时数据区 在Java中,JVM运行时数据区可以分为五个部分,分别是: 程序计数器 Java虚拟机栈 Java堆 方法区 运行时常量池 以下我们将分别对这五个部分进行详细的讲解。 1. 程序计数器 程序计数器是一块较小的内存空间,用来存储当前线程所执行的字节码地址。在多…

    Java 2023年6月1日
    00
  • springboot 实战:异常与重定向问题

    我们来谈一下 “springboot 实战:异常与重定向问题” 的完整攻略,过程中我会包含两个示例。首先,我们需要了解一下什么是异常和重定向。 异常是指程序在执行过程中遇到了不正常的情况,导致程序不能继续执行的错误。在 Java 中,程序遇到异常时会抛出一个异常对象。为了保证程序的正常运行,需要对这些异常进行处理。而重定向是指当用户访问一个 URL 时,服务…

    Java 2023年5月27日
    00
  • Java DriverManager.getConnection()获取数据库连接

    Java中获取数据库连接最常用的方式就是使用DriverManager类提供的getConnection静态方法,getConnection需要传递3个参数,分别为url、username和password。 其中,url参数用于指定连接的数据库、连接字符串,比如 “jdbc:mysql://localhost:3306/test”,表示连接本地3306端口…

    Java 2023年5月19日
    00
合作推广
合作推广
分享本页
返回顶部