Maison >Java >javaDidacticiel >Comment convertir une chaîne JSON en HashMap en Java ?

Comment convertir une chaîne JSON en HashMap en Java ?

Patricia Arquette
Patricia Arquetteoriginal
2024-11-14 10:42:02561parcourir

How to Convert a JSON String to a HashMap in Java?

Conversion d'une chaîne JSON en HashMap avec Java

En Java, l'analyse des données JSON et leur stockage dans un HashMap peuvent être réalisés à l'aide de diverses techniques . Voici comment procéder à l'aide de la bibliothèque org.json :

public static Map<String, Object> jsonToMap(JSONObject json) throws JSONException {
    Map<String, Object> retMap = new HashMap<>();

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

public static Map<String, Object> toMap(JSONObject object) throws JSONException {
    Map<String, Object> map = new HashMap<>();

    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<>();
    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;
}

Pour utiliser cette méthode, instanciez un objet JSONObject à partir de votre chaîne JSON, puis transmettez-le comme argument à la méthode jsonToMap. Il analysera de manière récursive la structure JSON et la convertira en HashMap.

Vous pouvez également utiliser la bibliothèque Jackson pour une solution plus concise :

import com.fasterxml.jackson.databind.ObjectMapper;

Map<String, Object> mapping = new ObjectMapper().readValue(jsonStr, HashMap.class);

Remplacez simplement jsonStr par votre JSON actuel Chaîne.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn