如何在 Java 中把 Hashmap 转换为 JSON 对象

Rupam Yadav 2023年1月30日 2020年9月26日
  1. new JSONObject(hashmap) 将 Hashmap 转换为 JSON 对象
  2. Jackson 库将 Hashmap 转换为 JSON 对象
  3. GSON 库将 Hashmap 转换为 JSON 对象
如何在 Java 中把 Hashmap 转换为 JSON 对象

本文介绍了在 Java 中把 Hashmap 转换为 JSON 对象的方法。我们将看到关于创建一个 hashmap,然后将其转换为 JSON 对象的详细例子。

Hashmap 和 JSON 都是开发人员非常常用的,因为它们帮助我们创建了一个简单的结构,可以轻松地用于存储以及传输数据。

new JSONObject(hashmap) 将 Hashmap 转换为 JSON 对象

将哈希图转换为 JSON 对象的最传统方法是调用 JSONObject(),然后传递哈希图。

让我们看一个创建哈希图,然后以 JSON 格式打印的示例。

import org.json.simple.JSONObject;

import java.util.HashMap;
import java.util.Map;

public class Main {
    public static void main(String[] args){
        Map<String, Object> map = new HashMap();

        map.put("key1", "value1");
        map.put("key2", "value2");
 
       JSONObject json =  new JSONObject(map);
        System.out.printf( "JSON: %s", json);

    }

输出:

JSON: {"key1":"value1","key2":"value2"}

需要注意的是,Map<String, Object> 需要一个字符串,即 key,和一个对象 Object,即 value。这意味着我们可以将任何有效的对象作为值传入 Map,然后将其转换为 JSON 对象。

下面是一个例子,它把一个字符串和一个 Arraylist 作为值。


import org.json.simple.JSONObject;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.Map;

public class Main {
    public static void main(String[] args){

        ArrayList<String> stringArrayList = new ArrayList<>();
        stringArrayList.add("firstString");
        stringArrayList.add("secondString");
        stringArrayList.add("thirdString");

        Map<String, Object> map = new HashMap();
        map.put("key1", "value1");
        map.put("key2", "value2");
        map.put("stringList", stringArrayList);

        JSONObject json =  new JSONObject(map);
        System.out.printf( "JSON: %s", json);

    }

输出:

JSON: {"key1":"value1","key2":"value2","stringList":["firstString","secondString","thirdString"]}

Jackson 库将 Hashmap 转换为 JSON 对象

在 Java 中,有一些库可以帮助我们将 Hashmap 转换为 JSON 对象,而且非常灵活。

Jackson 是这些库中的一个,它接收一个 Java map,然后将其转换成 JSON 格式。

我们不要忘记处理 JsonProcessingException,因为 ObjectMapper().writeValueAsString(map) 发现不兼容的数据格式时,会抛出异常。

import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.ObjectMapper;

import java.util.HashMap;
import java.util.Map;

public class Main {
    public static void main(String[] args) throws JsonProcessingException {

        Map<String, Object> map = new HashMap();
        map.put("key1", "value1");
        map.put("key2", "value2");

        String json = new ObjectMapper().writeValueAsString(map);
        System.out.printf( "JSON: %s", json);

    }

输出:

JSON: {"key1":"value1","key2":"value2"}

GSON 库将 Hashmap 转换为 JSON 对象

Gson 库是最常用的将 hashmap 转换为 JSON 对象的库之一。它提供了简单的方法来处理我们的 hashmap 和 JSON。

Gson 类有一个方法 toJsonTree 它接收我们的 Map 并将其转换为 JSON 树。但由于我们需要一个 JSON 对象,我们可以使用 toJSONObject() 来使 JSON 树成为一个 JSON 对象。

import com.google.gson.Gson;
import com.google.gson.JsonObject;

import java.util.HashMap;
import java.util.Map;

public class Main {
    public static void main(String[] args){

        Map<String, Object> map = new HashMap();
        map.put("key1", "value1");
        map.put("key2", "value2");

        Gson gson = new Gson();
        JsonObject json = gson.toJsonTree(map).getAsJsonObject();

        System.out.printf( "JSON: %s", json);

    }

输出:

JSON: {"key1":"value1","key2":"value2"}
Author: Rupam Yadav
Rupam Yadav avatar Rupam Yadav avatar

Rupam Saini is an android developer, who also works sometimes as a web developer., He likes to read books and write about various things.

LinkedIn

相关文章 - Java JSON

相关文章 - Java Hashmap