从 JSON 字符串创建 Hashmap

Posted

技术标签:

【中文标题】从 JSON 字符串创建 Hashmap【英文标题】:creating Hashmap from a JSON String 【发布时间】:2014-03-27 11:58:48 【问题描述】:

在java中从一个json字符串创建一个hashmap?

我有像 "phonetype":"N95","cat":"WP" 这样的 json 字符串,想转换成标准的 Hashmap。

我该怎么做?

【问题讨论】:

使用 JSON 库,例如 Jackson(参见 JsonNode 看看这个..***.com/questions/10368619/… 处理嵌套和复杂的对象:***.com/a/51121461/6665568 【参考方案1】:

解析 JSONObject 并创建 HashMap

public static void jsonToMap(String t) throws JSONException 

        HashMap<String, String> map = new HashMap<String, String>();
        JSONObject jObject = new JSONObject(t);
        Iterator<?> keys = jObject.keys();

        while( keys.hasNext() )
            String key = (String)keys.next();
            String value = jObject.getString(key); 
            map.put(key, value);

        

        System.out.println("json : "+jObject);
        System.out.println("map : "+map);
    

测试输出:

json : "phonetype":"N95","cat":"WP"
map : cat=WP, phonetype=N95

【讨论】:

请指定您使用的库,json-simple 中的 JSONObject 没有方法 keys()getString() @VinothkumarArputharaj 当我将类似的 json 字符串转换为 JSONObject 时,它会以随机顺序转换。如何以相同的顺序将 json 字符串转换为 json obects?? HashMap 未排序:docs.oracle.com/javase/6/docs/api/java/util/HashMap.html 你可以使用 Gson 库【参考方案2】:

您可以使用 Google 的 Gson 库将 json 转换为 Hashmap。试试下面的代码

String jsonString = "Your JSON string";
HashMap<String,String> map = new Gson().fromJson(jsonString, new TypeToken<HashMap<String, String>>().getType());

【讨论】:

正在寻找这个。谢谢。你能解释一下TypeToken&lt;HashMap&lt;String, String&gt;&gt;().getType()【参考方案3】:
public class JsonMapExample 

    public static void main(String[] args) 
        String json = "\"phonetype\":\"N95\",\"cat\":\"WP\"";
        Map<String, String> map = new HashMap<String, String>();
        ObjectMapper mapper = new ObjectMapper();

        try 
            //convert JSON string to Map
            map = mapper.readValue(json, new TypeReference<HashMap<String, String>>() );
            System.out.println(map);
         catch (Exception e) 
            e.printStackTrace();
        
    

输出:

phonetype=N95, cat=WP

你可以看到这个链接很有帮助http://www.mkyong.com/java/how-to-convert-java-map-to-from-json-jackson/

【讨论】:

org.codehaus.jackson?还在使用 Jackson 1.9.x? ;)【参考方案4】:

你可以使用Gson库

Type type = new TypeToken<HashMap<String, String>>() .getType();
new Gson().fromJson(jsonString, type);

【讨论】:

【参考方案5】:

这个操作很简单,不需要使用任何外部库。

你可以改用这个类:)(处理偶数列表、嵌套列表和json)

public class Utility 

    public static Map<String, Object> jsonToMap(Object json) throws JSONException 

        if(json instanceof JSONObject)
            return _jsonToMap_((JSONObject)json) ;

        else if (json instanceof String)
        
            JSONObject jsonObject = new JSONObject((String)json) ;
            return _jsonToMap_(jsonObject) ;
        
        return null ;
    


   private static Map<String, Object> _jsonToMap_(JSONObject json) throws JSONException 
        Map<String, Object> retMap = new HashMap<String, Object>();

        if(json != JSONObject.NULL) 
            retMap = toMap(json);
        
        return retMap;
    


    private static Map<String, Object> toMap(JSONObject object) throws JSONException 
        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;
    


    public static List<Object> toList(JSONArray array) throws JSONException 
        List<Object> list = new ArrayList<Object>();
        for(int i = 0; i < array.length(); i++) 
            Object value = array.get(i);
            if(value instanceof JSONArray) 
                value = toList((JSONArray) value);
            

            else if(value instanceof JSONObject) 
                value = toMap((JSONObject) value);
            
            list.add(value);
        
        return list;
    


要将您的 JSON 字符串转换为 hashmap,请使用:

HashMap<String, Object> hashMap = new HashMap<>(Utility.jsonToMap(response)) ;

【讨论】:

这比接受的答案要好得多,因为它处理嵌套和复杂的对象。帮了我很多:)【参考方案6】:
HashMap<String, Object> map = new Gson().fromJson(jsonString, HashMap.class);

试试这个

【讨论】:

【参考方案7】:
HashMap<String, String> hashMap = new HashMap<String, String>();
String string = "\"phonetype\":\"N95\",\"cat\":\"WP\"";

try 
    JSONObject json = new JSONObject(string);

    hashMap.put("phonetype", json.getString("phonetype"));
    hashMap.put("cat", json.getString("cat"));
 catch (JSONException e) 
     // TODO Handle expection!

【讨论】:

请不要使用空的 catch 块。 这个方案只适用于"phonetype":"N95","cat":"WP",应该是通用的。 Catch 块不是这里的重点,所以我同意 - 将它们留空以专注于实际逻辑【参考方案8】:

我建议不要自己这样做。 使用图书馆,例如来自 Google 的 Gson 库。

https://code.google.com/p/google-gson/

【讨论】:

【参考方案9】:

考虑这个json字符串


    "12": [
        
            "dash_url": "http://mediaserver.superprofs.com:1935/vods3/_definst_/mp4:amazons3/superprofs-media/private/lectures/12/12_960x540_200k.mp4/manifest.mpd",
            "video_bitrate": "200k",
            "audio_bitrate": "32k",
            "video_width": 960,
            "video_height": 540,
            "file_size": 125465600
        ,
        
            "dash_url": "http://mediaserver.superprofs.com:1935/vods3/_definst_/mp4:amazons3/superprofs-media/private/lectures/12/12_960x540_80k.mp4/manifest.mpd",
            "video_bitrate": "80k",
            "audio_bitrate": "32k",
            "video_width": 960,
            "video_height": 540,
            "file_size": 50186240
        ,
        
            "dash_url": "http://mediaserver.superprofs.com:1935/vods3/_definst_/mp4:amazons3/superprofs-media/private/lectures/12/12_640x360_201k.mp4/manifest.mpd",
            "video_bitrate": "201k",
            "audio_bitrate": "32k",
            "video_width": 640,
            "video_height": 360,
            "file_size": 145934731
        ,
        
            "dash_url": "http://mediaserver.superprofs.com:1935/vods3/_definst_/mp4:amazons3/superprofs-media/private/lectures/12/12_640x360_199k.mp4/manifest.mpd",
            "video_bitrate": "199k",
            "audio_bitrate": "32k",
            "video_width": 640,
            "video_height": 360,
            "file_size": 145800030
        ,
        
            "dash_url": "http://mediaserver.superprofs.com:1935/vods3/_definst_/mp4:amazons3/superprofs-media/private/lectures/12/12_640x360_79k.mp4/manifest.mpd",
            "video_bitrate": "79k",
            "audio_bitrate": "32k",
            "video_width": 640,
            "video_height": 360,
            "file_size": 71709477
        
    ],
    "13": [
        
            "dash_url": "http://mediaserver.superprofs.com:1935/vods3/_definst_/mp4:amazons3/superprofs-media/private/lectures/13/13_960x540_200k.mp4/manifest.mpd",
            "video_bitrate": "200k",
            "audio_bitrate": "32k",
            "video_width": 960,
            "video_height": 540,
            "file_size": 172902400
        ,
        
            "dash_url": "http://mediaserver.superprofs.com:1935/vods3/_definst_/mp4:amazons3/superprofs-media/private/lectures/13/13_960x540_80k.mp4/manifest.mpd",
            "video_bitrate": "80k",
            "audio_bitrate": "32k",
            "video_width": 960,
            "video_height": 540,
            "file_size": 69160960
        ,
        
            "dash_url": "http://mediaserver.superprofs.com:1935/vods3/_definst_/mp4:amazons3/superprofs-media/private/lectures/13/13_640x360_201k.mp4/manifest.mpd",
            "video_bitrate": "201k",
            "audio_bitrate": "32k",
            "video_width": 640,
            "video_height": 360,
            "file_size": 199932081
        ,
        
            "dash_url": "http://mediaserver.superprofs.com:1935/vods3/_definst_/mp4:amazons3/superprofs-media/private/lectures/13/13_640x360_199k.mp4/manifest.mpd",
            "video_bitrate": "199k",
            "audio_bitrate": "32k",
            "video_width": 640,
            "video_height": 360,
            "file_size": 199630781
        ,
        
            "dash_url": "http://mediaserver.superprofs.com:1935/vods3/_definst_/mp4:amazons3/superprofs-media/private/lectures/13/13_640x360_79k.mp4/manifest.mpd",
            "video_bitrate": "79k",
            "audio_bitrate": "32k",
            "video_width": 640,
            "video_height": 360,
            "file_size": 98303415
        
    ],
    "14": [
        
            "dash_url": "http://mediaserver.superprofs.com:1935/vods3/_definst_/mp4:amazons3/superprofs-media/private/lectures/14/14_960x540_200k.mp4/manifest.mpd",
            "video_bitrate": "200k",
            "audio_bitrate": "32k",
            "video_width": 960,
            "video_height": 540,
            "file_size": 205747200
        ,
        
            "dash_url": "http://mediaserver.superprofs.com:1935/vods3/_definst_/mp4:amazons3/superprofs-media/private/lectures/14/14_960x540_80k.mp4/manifest.mpd",
            "video_bitrate": "80k",
            "audio_bitrate": "32k",
            "video_width": 960,
            "video_height": 540,
            "file_size": 82298880
        ,
        
            "dash_url": "http://mediaserver.superprofs.com:1935/vods3/_definst_/mp4:amazons3/superprofs-media/private/lectures/14/14_640x360_201k.mp4/manifest.mpd",
            "video_bitrate": "201k",
            "audio_bitrate": "32k",
            "video_width": 640,
            "video_height": 360,
            "file_size": 237769546
        ,
        
            "dash_url": "http://mediaserver.superprofs.com:1935/vods3/_definst_/mp4:amazons3/superprofs-media/private/lectures/14/14_640x360_199k.mp4/manifest.mpd",
            "video_bitrate": "199k",
            "audio_bitrate": "32k",
            "video_width": 640,
            "video_height": 360,
            "file_size": 237395552
        ,
        
            "dash_url": "http://mediaserver.superprofs.com:1935/vods3/_definst_/mp4:amazons3/superprofs-media/private/lectures/14/14_640x360_79k.mp4/manifest.mpd",
            "video_bitrate": "79k",
            "audio_bitrate": "32k",
            "video_width": 640,
            "video_height": 360,
            "file_size": 116885686
        
    ],
    "15": [
        
            "dash_url": "http://mediaserver.superprofs.com:1935/vods3/_definst_/mp4:amazons3/superprofs-media/private/lectures/15/15_960x540_200k.mp4/manifest.mpd",
            "video_bitrate": "200k",
            "audio_bitrate": "32k",
            "video_width": 960,
            "video_height": 540,
            "file_size": 176128000
        ,
        
            "dash_url": "http://mediaserver.superprofs.com:1935/vods3/_definst_/mp4:amazons3/superprofs-media/private/lectures/15/15_960x540_80k.mp4/manifest.mpd",
            "video_bitrate": "80k",
            "audio_bitrate": "32k",
            "video_width": 960,
            "video_height": 540,
            "file_size": 70451200
        ,
        
            "dash_url": "http://mediaserver.superprofs.com:1935/vods3/_definst_/mp4:amazons3/superprofs-media/private/lectures/15/15_640x360_201k.mp4/manifest.mpd",
            "video_bitrate": "201k",
            "audio_bitrate": "32k",
            "video_width": 640,
            "video_height": 360,
            "file_size": 204263286
        ,
        
            "dash_url": "http://mediaserver.superprofs.com:1935/vods3/_definst_/mp4:amazons3/superprofs-media/private/lectures/15/15_640x360_199k.mp4/manifest.mpd",
            "video_bitrate": "199k",
            "audio_bitrate": "32k",
            "video_width": 640,
            "video_height": 360,
            "file_size": 204144447
        ,
        
            "dash_url": "http://mediaserver.superprofs.com:1935/vods3/_definst_/mp4:amazons3/superprofs-media/private/lectures/15/15_640x360_79k.mp4/manifest.mpd",
            "video_bitrate": "79k",
            "audio_bitrate": "32k",
            "video_width": 640,
            "video_height": 360,
            "file_size": 100454382
        
    ]

使用杰克逊解析器

 private static ObjectMapper underScoreToCamelCaseMapper;

    static 
        final DateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");

        underScoreToCamelCaseMapper = new ObjectMapper();
        underScoreToCamelCaseMapper.setDateFormat(df);
        underScoreToCamelCaseMapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);
        underScoreToCamelCaseMapper.setVisibility(PropertyAccessor.FIELD, JsonAutoDetect.Visibility.ANY);
        underScoreToCamelCaseMapper.setPropertyNamingStrategy(
                PropertyNamingStrategy.CAMEL_CASE_TO_LOWER_CASE_WITH_UNDERSCORES);

    public static <T> T parseUnderScoredResponse(String json, Class<T> classOfT) 
        try 
            if (json == null) 
                return null;
            
            return underScoreToCamelCaseMapper.readValue(json, classOfT);

         catch (JsonParseException e) 
         catch (JsonMappingException e) 
         catch (IOException e) 
        
        return null;
    

使用以下代码解析

 HashMap<String, ArrayList<Video>> integerArrayListHashMap =
                JsonHandler.parseUnderScoredResponse(test, MyHashMap.class);

MyHashMap 在哪里

 private static class MyHashMap extends HashMap<String,ArrayList<Video>>
    

【讨论】:

【参考方案10】:

没有 JSON 库,只有 String 和 HashMap。 保持简单! 希望它适合所有人。 // JSON 转换为基于 String 的 HashMap 示例

    String tempJson = "\"incomePhone\":\"213121122\",\"clientId\":\"1001\",\"clientAccountManager\":\"Gestor de Conta 1\",\"clientRetailBranch\":\"100\",\"phoneAccountManager\":\"7800100\"";
    System.out.println(tempJson);

    String[] parts = tempJson.split(",");
    HashMap<String,String> jsonHash = new HashMap<String,String>();

    for(int i=0;i<parts.length;i++)
        parts[i]    =   parts[i].replace("\"", "");
        parts[i]    =   parts[i].replace("", "");
        parts[i]    =   parts[i].replace("", "");
        String[] subparts = parts[i].split(":");
        jsonHash.put(subparts[0],subparts[1]);
    

【讨论】:

这对于任何数组和可能的嵌套对象都会失败。【参考方案11】:
public Map<String, String> parseJSON(JSONObject json, Map<String, String> dataFields) throws JSONException 
        Iterator<String> keys = json.keys();
        while (keys.hasNext()) 
            String key = keys.next();
            String val = null;
            try 
                JSONObject value = json.getJSONObject(key);
                parseJSON(value, dataFields);
             catch (Exception e) 
                if (json.isNull(key)) 
                    val = "";
                 else 
                    try 
                        val = json.getString(key);
                     catch (Exception ex) 
                        System.out.println(ex.getMessage());
                    
                
            

            if (val != null) 
                dataFields.put(key, val);
            
        
        return dataFields;
    

【讨论】:

【参考方案12】:

将 Json 解析为 HashMap 的最佳方法

public static HashMap<String, String> jsonToMap(JSONObject json) throws JSONException 
            HashMap<String, String> map = new HashMap<>();
            try 
                Iterator<String> iterator = json.keys();

                while (iterator.hasNext()) 
                    String key = iterator.next();
                    String value = json.getString(key);
                    map.put(key, value);
                

                return map;
             catch (JSONException e) 
                e.printStackTrace();
            
            return null;
        

【讨论】:

【参考方案13】:

在 Java 中,我们可以使用以下语句来实现。我们需要使用 Jackson ObjectMapper 并提供 HashMap.class 作为映射类。最后将结果存储为 HashMap 对象。

HashMap<String,String> hashMap = new ObjectMapper().readValue(jsonString, HashMap.class);

【讨论】:

【参考方案14】:

这对我有用:

JSONObject jsonObj = new JSONObject();
jsonObj.put("phonetype","N95");
jsonObj.put("cat","WP");

jsonObj 到 Hashmap 如下使用 gson

HashMap<String, Object> hashmap = new Gson().fromJson(jsonObj.toString(), HashMap.class);

使用的包

<dependencies>
    <dependency>
        <groupId>org.json</groupId>
        <artifactId>json</artifactId>
        <version>20180813</version>
    </dependency>
    <dependency>
        <groupId>com.google.code.gson</groupId>
        <artifactId>gson</artifactId>
        <version>2.8.6</version>
    </dependency>
</dependencies>

【讨论】:

【参考方案15】:

下面是一个简单的例子,它可以通过仅使用 JSON 简单库从 JSON 字符串创建 Hashmap:

"Collection":"Item_Type":"Any","Name":"A","Item_ID":"000014","Object_Name":"System"

import java.io.FileReader;
import java.util.HashMap;
import java.util.Iterator; 
import java.util.Map;  
import org.json.simple.JSONObject; 
import org.json.simple.parser.*;

public class JSONRead 

public static void main(String[] args) throws Exception 
    
    Object obj = new JSONParser().parse(new FileReader("D:\\other.json"));
    
    HashMap<String,String> map =new HashMap<String,String>();
    
    // typecasting obj to JSONObject 
    JSONObject jo = (JSONObject) obj;
    
    Map Item_Id = ((Map)jo.get("Collection"));
            
    Iterator<Map.Entry> itr1 = Item_Id.entrySet().iterator(); 
    while (itr1.hasNext())  
        Map.Entry pair = itr1.next(); 
        String key = (String) pair.getKey();
        String value = (String) pair.getValue();
        System.out.println( pair.getKey() + " : " + pair.getValue()); 
        map.put(key, value);
    
    
    System.out.println(map)
    System.out.println(map.get("Item"));        

【讨论】:

【参考方案16】:

您可以使用 Jackson 来执行此操作。我还没有找到一个简单的 Gson 解决方案。

data_map.json 是一个 JSON(对象)资源文件 而data_list.json 是一个 JSON(数组)资源文件。

import java.io.File;
import java.io.IOException;
import java.net.MalformedURLException;
import java.net.URISyntaxException;
import java.net.URL;
import java.util.List;
import java.util.Map;
import java.util.Scanner;

import com.fasterxml.jackson.core.JsonGenerationException;
import com.fasterxml.jackson.core.JsonParseException;
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.core.type.TypeReference;
import com.fasterxml.jackson.databind.JsonMappingException;
import com.fasterxml.jackson.databind.ObjectMapper;

/**
 * Based on:
 * 
 * http://www.mkyong.com/java/how-to-convert-java-map-to-from-json-jackson/
 */
public class JsonLoader 
    private static final ObjectMapper OBJ_MAPPER;
    private static final TypeReference<Map<String,Object>> OBJ_MAP;
    private static final TypeReference<List<Map<String,Object>>> OBJ_LIST;

    static 
        OBJ_MAPPER = new ObjectMapper();
        OBJ_MAP = new TypeReference<Map<String,Object>>();
        OBJ_LIST = new TypeReference<List<Map<String,Object>>>();
    

    public static void main(String[] args) 
        try 
            System.out.println(jsonToString(parseJsonString(read("data_map.json", true))));
            System.out.println(jsonToString(parseJsonString(read("data_array.json", true))));
         catch (IOException e) 
            e.printStackTrace();
        
    

    private static final Object parseJsonString(String jsonString) 
        try 
            if (jsonString.startsWith("")) 
                return readJsonObject(jsonString);
             else if (jsonString.startsWith("[")) 
                return readJsonArray(jsonString);
            
         catch (JsonGenerationException e) 
            e.printStackTrace();
         catch (JsonMappingException e) 
            e.printStackTrace();
         catch (IOException e) 
            e.printStackTrace();
        

        return null;
    

    public static String jsonToString(Object json) throws JsonProcessingException 
        return OBJ_MAPPER.writerWithDefaultPrettyPrinter().writeValueAsString(json);
    

    private static final Map<String,Object> readJsonObject(String jsonObjectString) throws JsonParseException, JsonMappingException, IOException 
        return OBJ_MAPPER.readValue(jsonObjectString, OBJ_MAP);
    

    private static final List<Map<String,Object>> readJsonArray(String jsonArrayString) throws JsonParseException, JsonMappingException, IOException 
        return OBJ_MAPPER.readValue(jsonArrayString, OBJ_LIST);
    

    public static final Map<String,Object> loadJsonObject(String path, boolean isResource) throws JsonParseException, JsonMappingException, MalformedURLException, IOException 
        return OBJ_MAPPER.readValue(load(path, isResource), OBJ_MAP);
    

    public static final List<Map<String,Object>> loadJsonArray(String path, boolean isResource) throws JsonParseException, JsonMappingException, MalformedURLException, IOException 
        return OBJ_MAPPER.readValue(load(path, isResource), OBJ_LIST);
    

    private static final URL pathToUrl(String path, boolean isResource) throws MalformedURLException 
        if (isResource) 
            return JsonLoader.class.getClassLoader().getResource(path);
        

        return new URL("file:/" + path);
    

    protected static File load(String path, boolean isResource) throws MalformedURLException 
        return load(pathToUrl(path, isResource));
    

    protected static File load(URL url) 
        try 
            return new File(url.toURI());
         catch (URISyntaxException e) 
            return new File(url.getPath());
        
    

    public static String read(String path, boolean isResource) throws IOException 
        return read(path, "UTF-8", isResource);
    

    public static String read(String path, String charset, boolean isResource) throws IOException 
        return read(pathToUrl(path, isResource), charset);
    

    @SuppressWarnings("resource")
    public static String read(URL url, String charset) throws IOException 
        return new Scanner(url.openStream(), charset).useDelimiter("\\A").next();
    


额外

这是Dheeraj Sachan 示例的完整代码。

import java.io.File;
import java.io.IOException;
import java.io.Serializable;
import java.net.MalformedURLException;
import java.net.URISyntaxException;
import java.net.URL;
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map.Entry;
import java.util.Scanner;

import com.fasterxml.jackson.annotation.JsonAutoDetect;
import com.fasterxml.jackson.annotation.PropertyAccessor;
import com.fasterxml.jackson.core.JsonParseException;
import com.fasterxml.jackson.databind.DeserializationFeature;
import com.fasterxml.jackson.databind.JsonMappingException;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.databind.PropertyNamingStrategy;

public class JsonHandler 
    private static ObjectMapper propertyMapper;

    static 
        final DateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");

        propertyMapper = new ObjectMapper();
        propertyMapper.setDateFormat(df);
        propertyMapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);
        propertyMapper.setVisibility(PropertyAccessor.FIELD, JsonAutoDetect.Visibility.ANY);
        propertyMapper.setPropertyNamingStrategy(PropertyNamingStrategy.CAMEL_CASE_TO_LOWER_CASE_WITH_UNDERSCORES);
    

    private static class MyHashMap extends HashMap<String, List<Video>>
        private static final long serialVersionUID = 7023107716981734468L;
    

    private static class Video implements Serializable 
        private static final long serialVersionUID = -446275421030765463L;

        private String dashUrl;
        private String videoBitrate;
        private String audioBitrate;
        private int videoWidth;
        private int videoHeight;
        private long fileSize;

        @Override
        public String toString() 
            return "Video [url=" + dashUrl + ", video=" + videoBitrate + ", audio=" + audioBitrate
                    + ", , , size=" + fileSize + "]";
        
    

    public static void main(String[] args) 
        try 
            HashMap<String, List<Video>> map = loadJson("sample.json", true);
            Iterator<Entry<String, List<Video>>> lectures = map.entrySet().iterator();

            while (lectures.hasNext()) 
                Entry<String, List<Video>> lecture = lectures.next();

                System.out.printf("Lecture #%s%n", lecture.getKey());

                for (Video video : lecture.getValue()) 
                    System.out.println(video);
                
            
         catch (IOException e) 
            e.printStackTrace();
        
    

    public static <T> T parseUnderScoredResponse(String json, Class<T> classOfT) 
        try 
            if (json == null) 
                return null;
            
            return propertyMapper.readValue(json, classOfT);

         catch (JsonParseException e) 
            e.printStackTrace();
         catch (JsonMappingException e) 
            e.printStackTrace();
         catch (IOException e) 
            e.printStackTrace();
        
        return null;
    

    public static URL pathToUrl(String path, boolean isResource) throws MalformedURLException 
        if (isResource) 
            return JsonHandler.class.getClassLoader().getResource(path);
        

        return new URL("file:/" + path);
    

    public static File load(String path, boolean isResource) throws MalformedURLException 
        return load(pathToUrl(path, isResource));
    

    public static File load(URL url) 
        try 
            return new File(url.toURI());
         catch (URISyntaxException e) 
            return new File(url.getPath());
        
    

    @SuppressWarnings("resource")
    public static String readFile(URL url, String charset) throws IOException 
        return new Scanner(url.openStream(), charset).useDelimiter("\\A").next();
    

    public static String loadJsonString(String path, boolean isResource) throws IOException 
        return readFile(path, isResource, "UTF-8");
    

    public static String readFile(String path, boolean isResource, String charset) throws IOException 
        return readFile(pathToUrl(path, isResource), charset);
    

    public static HashMap<String, List<Video>> loadJson(String jsonString) throws IOException 
        return JsonHandler.parseUnderScoredResponse(jsonString, MyHashMap.class);
    

    public static HashMap<String, List<Video>> loadJson(String path, boolean isResource) throws IOException 
        return loadJson(loadJsonString(path, isResource));
    

【讨论】:

以上是关于从 JSON 字符串创建 Hashmap的主要内容,如果未能解决你的问题,请参考以下文章

将 JSON 字符串转换为 HashMap

将 JSON 字符串转换为 HashMap

将 JSON 字符串转换为 Java 对象或 HashMap

从 LinkedHashMap 构建有序 JSON 字符串

ArrayList<HashMap<String,String>> 到 JSON 对象 Java

怎么把hashmap转换成实体类