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 サイトの他の関連記事を参照してください。