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 对象打印输出。

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

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

相关文章

  • 2021年最新Redis面试题汇总(3)

    注意:为了更好的呈现Markdown格式,下文中有些地方的符号用中文描述而不是直接使用符号。但这并不影响文本的正确性。 2021年最新Redis面试题汇总(3)——完整攻略 题目概述 本文是“2021年最新Redis面试题汇总(3)”的完整攻略。本篇文章共包括14个Redis面试题,均为比较高级的面试题,适用于Redis高级岗位的面试。 Redis是目前非常…

    Java 2023年5月19日
    00
  • JDBCTM 指南:入门3 – DriverManager

    下面是详细讲解“JDBCTM 指南:入门3 – DriverManager”的完整攻略。 JDBCTM 指南:入门3 – DriverManager 在本文中,我们将介绍JDBC中的DriverManager类,它是Java SQL API的一个基本组件,用于管理数据库驱动程序。 什么是 DriverManager DriverManager是Java提供的…

    Java 2023年6月16日
    00
  • Java生成日期时间存入Mysql数据库的实现方法

    非常感谢您对Java生成日期时间存入Mysql数据库的实现方法的关注。 下面是具体实现步骤和示例代码: 1. 准备工作 确保已经安装好了Java和Mysql,并且已经存在一个名为“test”的数据库。 导入mysql-connector-java-5.1.49-bin.jar包(版本可根据实际情况进行更换)。 2. 创建数据库表 创建一个名为“user”的表…

    Java 2023年5月20日
    00
  • Mybatis新手教程之简单入门

    Mybatis是一个支持基于XML或注解的SQL语句编写和执行的轻量级开源框架,本文将会详细介绍Mybatis的入门使用,让新手能够轻松掌握该框架的使用方法。 步骤一:导入Mybatis依赖 在使用Mybatis前,需要在项目中引入相关的依赖。可以通过Maven等构建工具来导入以下两个MyBatis相关的jar包: <dependency> &l…

    Java 2023年5月20日
    00
  • Java实现截取字符串的操作详解

    Java实现截取字符串的操作详解 Java是一种非常流行的编程语言,它内置了许多字符串操作函数,其中截取字符串也是其中一种常用的操作技能。本文旨在详细讲解Java实现截取字符串的操作,并提供两个示例进行说明。 什么是截取字符串? 截取字符串是指从一个字符串中抽取出一个子字符串。例如,有一个字符串“Hello world”,如果我们想要取出“Hello”这个子…

    Java 2023年5月26日
    00
  • MyBatis注解实现动态SQL问题

    下面是针对”MyBatis注解实现动态SQL问题”的完整攻略: 动态SQL语句的背景: 在进行数据库操作时,我们经常会用到动态SQL语句,而MyBatis也提供了多种方式来实现动态SQL,比如XML方式等,但是本文主要讲解注解实现动态SQL的问题。注解方式的实现相比XML更加简洁,可读性更强。在注解方式中,我们可以使用MyBatis提供的@SelectPro…

    Java 2023年5月20日
    00
  • SpringBoot项目中的视图解析器问题(两种)

    在 Spring Boot 项目中,视图解析器是用于将逻辑视图名称解析为实际视图对象的组件。Spring Boot 支持两种类型的视图解析器:Thymeleaf 和 JSP。本文将介绍这两种视图解析器的使用方法和示例。 Thymeleaf 视图解析器 1. 什么是 Thymeleaf? Thymeleaf 是一种现代化的服务器端 Java 模板引擎,它可以处…

    Java 2023年5月18日
    00
  • JavaScript 引用类型实例详解【数组、对象、严格模式等】

    JavaScript 引用类型实例详解 在 JavaScript 中,引用类型是一种数据结构类型,它们不同于基本类型,基本类型是按值传递,而引用类型则是按引用传递,即在内存中存放的是该值在堆内存中存放的地址,而不是该值本身。常见的引用类型包括数组、对象、函数等。 数组 数组是一种可以存储一组有序数据的集合,它是一种可以动态扩展的对象。数组的声明方式如下: l…

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