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

在Java中,JSONObject对象和Map对象是两种常用的数据结构,本篇攻略将介绍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对象之间的相互转换

基础教程推荐