详解JSONObject和JSONArray区别及基本用法

详解JSONObject和JSONArray区别及基本用法

1. JSONObject和JSONArray是什么?

Java中,JSONObjectJSONArray都是JSON格式数据的提供者。

JSONObject对象表示一个JSON对象,即类似于{ "name": "张三", "age": 18, "gender": "male" }这样的数据结构。

JSONArray对象表示一个JSON数组,即类似于[ "苹果", "香蕉", "梨子" ]这样的数据结构。

2. JSONObject和JSONArray的基本用法

2.1 创建JSONObject对象

假设有一个JSON对象:{ "name": "张三", "age": 18, "gender": "male" },如何在Java中创建对应的JSONObject对象呢?

JSONObject jsonObject = new JSONObject();
jsonObject.put("name", "张三");
jsonObject.put("age", 18);
jsonObject.put("gender", "male");

同样,可以使用JSONObjectput()方法添加键值对,键通常是字符串类型,值可以是任意类型。创建完成后,该JSONObject对象就可以当做一个map来使用,例如获取某个键对应的值:

String name = jsonObject.getString("name"); // 获取键为"name"的值
int age = jsonObject.getInt("age"); // 获取键为"age"的值
String gender = jsonObject.getString("gender"); // 获取键为"gender"的值

2.2 创建JSONArray对象

假设有一个JSON数组:[ "苹果", "香蕉", "梨子" ],如何在Java中创建对应的JSONArray对象呢?

JSONArray jsonArray = new JSONArray();
jsonArray.put("苹果");
jsonArray.put("香蕉");
jsonArray.put("梨子");

同样,可以使用JSONArrayput()方法添加元素。创建完成后,该JSONArray对象就可以当做一个List来使用,例如获取某个位置的元素:

String fruit = jsonArray.getString(1); // 获取第2个元素,即"香蕉"

2.3 JSONObject和JSONArray的嵌套使用

JSON数据通常是由JSONObject、JSONArray和基本类型(字符串、数字、布尔值和null)组成的,因此我们可以嵌套使用它们来表示复杂的数据结构。

例如,我们可以创建一个JSON对象,其中包含一个JSON数组作为值:

JSONObject jsonObject = new JSONObject();
jsonObject.put("name", "张三");
jsonObject.put("fruitList", new JSONArray()
        .put("苹果")
        .put("香蕉")
        .put("梨子")
);

这样,我们就创建了一个包含"name"和"fruitList"两个键的JSON对象,其中"fruitList"的值是一个包含3个元素的JSON数组。

因为JSONObject和JSONArray都是把JSON数据映射到Java中的数据结构,所以在使用时需要按照JSON的语法规则操作。例如,在创建JSON数组时,每个元素时需要通过put()方法添加,而不是使用add()方法。

2.4 JSON数据解析

在实际开发中,经常需要从接口返回的JSON数据中解析出有用的信息。例如,假设有以下JSON数据:

{
    "code": 0,
    "message": "success",
    "data": {
        "name": "李四",
        "age": 20,
        "gender": "female",
        "fruitList": [
            "西瓜",
            "葡萄",
            "草莓"
        ]
    }
}

我们可以定义一个Java对象,用于接收这个JSON数据的解析结果:

public class ResponseData {
    private int code;
    private String message;
    private JSONObject data;
    public int getCode() {
        return code;
    }
    public void setCode(int code) {
        this.code = code;
    }
    public String getMessage() {
        return message;
    }
    public void setMessage(String message) {
        this.message = message;
    }
    public JSONObject getData() {
        return data;
    }
    public void setData(JSONObject data) {
        this.data = data;
    }
}

然后使用JSON库的解析方法,获取JSON数据中某个键对应的值,例如:

String jsonData = "上面的JSON数据";
ResponseData responseData = new ResponseData();
JSONObject jsonObject = new JSONObject(jsonData);
responseData.setCode(jsonObject.getInt("code"));
responseData.setMessage(jsonObject.getString("message"));
responseData.setData(jsonObject.getJSONObject("data"));

如上所示,使用JSON库(这里使用的是开源库org.json)可以方便地进行JSON数据解析,将JSON数据转换为Java对象后,可以像操作普通Java对象一样使用。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:详解JSONObject和JSONArray区别及基本用法 - Python技术站

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

相关文章

  • Java数据库连接池连接Oracle过程详解

    Java数据库连接池连接Oracle过程详解 本文将详细讲解Java数据库连接池连接Oracle的过程,包括连接池的作用、如何配置连接池、连接池连接Oracle的步骤、注意事项等。 连接池的作用 连接池是为了提高系统性能和稳定性而设计的。在Java中,使用连接池可以避免频繁地打开和关闭数据库连接,从而节省系统资源。当一个请求需要访问数据库时,连接池会从连接池…

    Java 2023年6月16日
    00
  • Java servlet执行流程代码实例

    Java Servlet是Java编写的服务器端程序,它可以接收来自客户端(如浏览器、Android等)的请求并生成响应,通常用于开发Web应用程序。本篇攻略将详细讲解Java Servlet执行流程,并提供两个示例代码来说明。 Servlet执行流程 任何一个Servlet处理一个客户端请求的完整处理过程,都可以分为6个步骤: 客户端向服务器发送请求。 服…

    Java 2023年6月15日
    00
  • Spring AOP如何实现注解式的Mybatis多数据源切换详解

    让我为你详细讲解一下“Spring AOP如何实现注解式的Mybatis多数据源切换详解”。 1. 什么是Spring AOP Spring AOP是Spring框架中的一个重要子模块,用于实现面向切面编程,是一种方便、高效的编程方式。AOP(Aspect Oriented Programming)即面向切面编程是一种能够很好地与OOP(Object Ori…

    Java 2023年5月20日
    00
  • SpringBoot+JSON+AJAX+ECharts+Fiddler实现前后端分离开发可视化

    简介在前后端分离的开发模式中,前端使用HTML、CSS和JavaScript等技术提供页面交互体验,向后台服务器发送请求获取数据,后台服务器处理请求并返回数据给前端,前端页面呈现出处理后的数据。本次攻略使用SpringBoot+JSON+AJAX+ECharts实现了一个前后端分离开发可视化的实例。具体实现过程如下。 技术栈 SpringBoot:后端框架 …

    Java 2023年5月20日
    00
  • 9个java数组常用操作实例

    9个Java数组常用操作实例 Java中的数组操作是开发者常用的操作之一,本篇文章将介绍9个常用的数组操作。 1. 创建数组 Java中使用[]操作符可以创建数组,下面的实例创建了一个长度为5的整型数组。 int[] arr = new int[5]; 2. 设置数组元素值 可以使用下标[]操作符为数组指定位置设置元素值,下面是一个将第2个元素设置为7的示例…

    Java 2023年5月26日
    00
  • Java如何获取List中的String详解

    我来详细讲解一下怎样获取List中的String。 获取List中的String 方法一:for循环遍历获取 最常见的获取List中的String的方法是通过for循环来遍历List中的每一个String,然后依次获取每个String。下面是示例代码: List<String> list = new ArrayList<String>…

    Java 2023年5月27日
    00
  • Flex与.NET互操作 使用FileReference+HttpHandler实现文件上传/下载

    Flex与.NET互操作 使用FileReference+HttpHandler实现文件上传/下载 概述 本文主要介绍如何通过Flex和.NET相互配合,实现文件上传/下载。 在介绍具体步骤之前,先简单介绍FileReference和HttpHandler。 FileReference是Flex中处理文件上传/下载的类,使用FileReference类可以实…

    Java 2023年6月15日
    00
  • Java 详解单向加密–MD5、SHA和HMAC及简单实现实例

    Java 详解单向加密–MD5、SHA和HMAC及简单实现实例 什么是单向加密? 单向加密是指无法将加密后的信息转化为原始信息的加密方式。单向加密可以用于密码验证,数字签名,和数据完整性验证等。常见的单向加密算法如MD5、SHA和HMAC等。 什么是MD5? MD5是单向加密的其中一种算法,它可以将任意长度的消息“压缩”成一个128位长度的摘要,也就是消息…

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