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

2023-12-10java编程
950

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

The End

相关推荐

一文带你掌握Java8中Lambda表达式 函数式接口及方法构造器数组的引用
Lambda表达式是Java 8中引入的新特性之一,它是一个匿名函数,可以捕获参数并表现为一个代码块,而不像方法一样需要一个固定的名称。它主要用于传递行为或代码块以及事件处理等操作。...
2023-12-11 java编程
30

基于Java 谈回调函数
下面为您详细讲解基于Java的回调函数。...
2023-12-11 java编程
21

java equals函数用法详解
在Java中,equals()是用来比较两个对象是否相等的函数。equals()方法是Object类中的方法,因此所有Java类都包含equals()方法。在默认情况下,equals()方法比较对象的引用地址是否相同,即两个对象是否是同一个实例。但是,我们可以覆盖equals()方法,来定义自...
2023-12-11 java编程
63

JavaWeb学习笔记分享(必看篇)
JavaWeb是Java在Web领域的应用,是目前非常热门的技术之一。但是JavaWeb涉及到的技术非常广泛,初学者很容易迷失方向。本文总结了JavaWeb的基础知识,为初学者提供了一份学习笔记分享,希望能够帮助大家快速入门。...
2023-12-11 java编程
8

Java中replace、replaceAll和replaceFirst函数的用法小结
在Java编程中,字符串操作是很常见的,而替换字符串是其中常用的操作之一。Java提供了三种函数用于替换字符串:replace、replaceAll和replaceFirst。这篇文章将为您详细介绍它们的用法。...
2023-12-11 java编程
121

基于Java中进制的转换函数详解
进制是数学中一种表示数值大小的方法,常见的进制有10进制、2进制、16进制等。...
2023-12-11 java编程
45