JAVA中JSONObject对象和Map对象之间的相互转换

Java中,JSONObject对象和Map对象是两种常用的数据结构,本篇攻略将介绍JSONObject对象和Map对象相互转换的方法。

什么是JSONObject对象和Map对象

JSONObject对象

JSONObject 是一个能够存储 key-value 映射的简单的开放解决方案。 JSONObject 的 constructor 支持通过传入一个 Map 对象,将 Map 对象转换成 JSONObject 对象。 JSONObject 对象通常用于解析 JSON 字符串,使得 JSON 数据在 Java 程序中易于使用。

Map对象

Map 是一个key-value映射的接口。Map 的实现类可以看做一个散列表,也称为哈希表。每一个Key都对应了一个Value。Map 通常用来存储一些键值对(key-value pair), 并根据key快速获取value。

JSONObject对象转Map对象

我们可以通过 JSONObject 对象的 toMap 方法将 JSONObject 转换成 Map 对象:

import org.json.JSONObject;
import java.util.Map;

public class JsonMapConvert {

    public static Map<String, Object> jsonToMap(JSONObject json) {
        Map<String, Object> retMap = new HashMap<String, Object>();
        if (json != null) {
            retMap = toMap(json);
        }
        return retMap;
    }

    public static Map<String, Object> toMap(JSONObject object) {
        Map<String, Object> map = new HashMap<String, Object>();
        Iterator<String> keysItr = object.keys();
        while(keysItr.hasNext()) {
            String key = keysItr.next();
            Object value = object.get(key);

            if(value instanceof JSONArray) {
                value = toList((JSONArray) value);
            }

            else if(value instanceof JSONObject) {
                value = toMap((JSONObject) value);
            }
            map.put(key, value);
        }
        return map;
    }
}

这里使用了 JSONObject 对象的 keysget 方法来获取 key-value 映射并转换成 Map 对象。

示例:

import org.json.JSONObject;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;

public class Demo {

    public static void main(String[] args){

        JSONObject jsonObj = new JSONObject();
        jsonObj.put("name", "张三");
        jsonObj.put("age", 18);
        jsonObj.put("address", "北京市海淀区");

        Map<String,Object> map = JsonMapConvert.jsonToMap(jsonObj);

        System.out.println(map.get("name")); // 张三
        System.out.println(map.get("age"));  // 18
        System.out.println(map.get("address")); // 北京市海淀区

    }
}

上面的代码示例中,我们首先创建了一个 JSONObject 对象并添加了三个键值对,然后使用 JsonMapConvert 类的 jsonToMap 方法将 JSONObject 对象转换成 Map 对象,最后通过 map 对象获取键值对的值。

Map对象转JSONObject对象

通过put方法将Map置入到JSONObject中即可实现Map转JSONObject,如下所示:

import org.json.JSONObject;
import java.util.HashMap;
import java.util.Map;

public class MapToJsonConvert {

    public static JSONObject toJSONObject(Map map) {
        return new JSONObject(map);
    }

}

示例:

import org.json.JSONObject;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;

public class Demo {

    public static void main(String[] args){

        Map<String,Object> map = new HashMap<String,Object>();
        map.put("name", "张三");
        map.put("age", 18);
        map.put("address", "北京市海淀区");

        JSONObject jsonObj = MapToJsonConvert.toJSONObject(map);

        System.out.println(jsonObj.toString());
    }

}

上面的代码示例中,我们首先创建了一个 Map 对象并添加了三个键值对,然后使用 MapToJsonConvert 类的 toJSONObject 方法将 Map 对象转换成 JSONObject 对象,最后将 JSONObject 对象打印输出。

阅读剩余 63%

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:JAVA中JSONObject对象和Map对象之间的相互转换 - Python技术站

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

相关文章

  • Java Apache POI报错“OldExcelFormatException”的原因与解决办法

    “OldExcelFormatException”是Java的Apache POI类库中的一个异常,通常由以下原因之一引起: 文件格式错误:如果文件不是Excel 2007或更高版本的.xlsx格式,则可能会出现异常。例如,可能会尝试读取旧版的Microsoft Excel文件或尝试读取其他文件类型。 以下是两个实例: 例1 文件格式错误,则可以尝试使用正确…

    Java 2023年5月5日
    00
  • SpringBoot复杂参数应用详细讲解

    SpringBoot复杂参数应用详细讲解 在SpringBoot中,我们可以很方便地绑定和处理各种类型的请求参数,包括简单的字符串和数字,以及复杂的对象和集合类型。在本文中,我们将详细介绍如何处理复杂的请求参数,包括Bean对象、List和Map集合类型等。 1. Bean对象参数 对于Bean对象类型的参数,我们可以通过在控制器方法中直接声明该对象的参数来…

    Java 2023年5月15日
    00
  • Docker镜像构建之docker commit的使用

    下面是关于“Docker镜像构建之docker commit的使用”的完整攻略。 什么是docker commit 在Docker中,我们可以通过基础镜像来创建新的镜像。Docker的基础镜像是有多层组成的,而通过docker commit,我们可以将容器中的改动转换为新的镜像。 docker commit命令的基本用法 docker commit的基本用法…

    Java 2023年6月2日
    00
  • Windows安装Maven并配置环境的详细步骤

    下面是“Windows安装Maven并配置环境的详细步骤”的完整攻略: 1.下载并安装Maven 1.1 打开Maven官网(https://maven.apache.org/),找到Download页面,下载最新的release版。 1.2 将下载的压缩包解压至指定的目录,如:C:\Program Files\Apache\maven。 2.配置环境变量 …

    Java 2023年5月20日
    00
  • spring解决循环依赖

    Spring可以通过循环依赖机制解决Java类之间的循环依赖问题,使得依赖关系的链条能够正确地建立和管理。这是因为Spring在创建Bean时采用了延迟依赖注入的方式,先创建不带依赖的Bean对象,再通过setter方法或者构造函数注入其所依赖的其他Bean对象,实现了依赖对象的动态注入。 下面是具体的解决循环依赖的攻略: 构造函数注入 一个Bean依赖于另…

    Java 2023年5月31日
    00
  • 深入剖析Java之String字符串

    深入剖析Java之String字符串 介绍 在Java中,String是最常用的数据类型之一,它表示了一个由字符组成的不可变字符串。在实际编程过程中,我们经常需要进行字符串的操作,比如拼接、截取、替换等操作。本文将从基本数据结构说起,深入剖析Java String字符串的特点、常用方法以及相关注意事项。 基本数据结构 在Java中String本质上是一个字符…

    Java 2023年5月26日
    00
  • Spring Boot处理全局统一异常的两种方法与区别

    下面我将详细讲解Spring Boot处理全局统一异常的两种方法与区别。 1. 方法一:使用@ControllerAdvice注解 1.1 @ControllerAdvice注解的作用 @ControllerAdvice注解用于定义全局异常处理方法,可以在单个类中定义多个异常处理方法,且可以分不同的异常类进行处理。 1.2 具体实现步骤 创建一个全局异常处理…

    Java 2023年5月27日
    00
  • SpringBoot Admin 使用指南(推荐)

    Spring Boot Admin 使用指南 Spring Boot Admin 是一个用于管理和监控 Spring Boot 应用程序的开源项目。它提供了一个简单易用的 Web 界面,可以帮助我们监控应用程序的运行状态、性能标和日志信息等。在本文中,我们将详细讲解 Spring Boot Admin 的使用方法,并提供两个示例。 添加依赖 在 Spring…

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