ホームページ >Java >&#&チュートリアル >Java で JSON 文字列を HashMap に変換するにはどうすればよいですか?

Java で JSON 文字列を HashMap に変換するにはどうすればよいですか?

Mary-Kate Olsen
Mary-Kate Olsenオリジナル
2024-11-11 22:45:03216ブラウズ

How can I convert a JSON String to a HashMap in Java?

Java での JSON 文字列の HashMap への変換

Java では、JSON データを構造化されたアクセス可能なデータ形式で保存する必要があるシナリオが発生することがあります。これに便利なオプションの 1 つは、キーを対応する値にマップできる HashMap を使用することです。

JSON 文字列を HashMap に変換するには、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;
}

このコードでは、jsonToMap メソッドは retMap という HashMap を初期化し、入力 JSONObject が null でないかどうかを確認します。 null でない場合、再帰的な toMap メソッドを呼び出して、JSONObject を HashMap に変換します。

toMap メソッドは、JSONObject 内のキーを反復処理し、対応する値を抽出します。ネストされた JSON オブジェクトと配列を再帰的に処理し、JSON 構造全体を効果的に HashMap に変換します。

あるいは、非再帰的なアプローチを好み、Jackson ライブラリを使用している場合は、次のコードを使用できます。

import com.fasterxml.jackson.databind.ObjectMapper;

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

このアプローチでは、JSON 文字列を目的の Java オブジェクトに直接解析できる Jackson ライブラリの ObjectMapper クラスを利用することで、変換プロセスを簡素化します。

これらの手法を実装することで、JSON 文字列を効果的に変換できます。 Java の HashMap に変換し、JSON データを保存および管理するための柔軟で効率的なデータ構造を提供します。

以上がJava で JSON 文字列を HashMap に変換するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。