1. ホーム

[解決済み】Jackson JSONでJSONの文字列をMap<String, String>に変換する方法

2022-04-07 01:08:46

質問

このようなことをしようとしているのですが、うまくいきません。

Map<String, String> propertyMap = new HashMap<String, String>();

propertyMap = JacksonUtils.fromJSON(properties, Map.class);

しかし、IDEは言う。

チェックされていない代入 Map to Map<String,String>

正しい方法は何でしょうか? 私は、プロジェクトですでに利用可能なものだからJacksonを使用しているだけで、JSONとの間で変換するネイティブなJavaの方法はあるのでしょうか?

PHPの場合、単純に json_decode($str) という配列が返されます。ここでも基本的に同じことが必要です。

どのように解決するのですか?

[2020年9月更新】何年も前に書いたオリジナルの回答が役に立っているようで、今でもアップボートをいただいていますが、現在はGoogleのGSONライブラリを使用しており、こちらの方が直感的だと感じています。

次のようなコードになりました。

public void testJackson() throws IOException {  
    ObjectMapper mapper = new ObjectMapper(); 
    File from = new File("albumnList.txt"); 
    TypeReference<HashMap<String,Object>> typeRef 
            = new TypeReference<HashMap<String,Object>>() {};

    HashMap<String,Object> o = mapper.readValue(from, typeRef); 
    System.out.println("Got " + o); 
}   

ファイルから読み込んでいるが mapper.readValue()InputStream を取得することができます。 InputStream を使用することで、文字列から

new ByteArrayInputStream(astring.getBytes("UTF-8")); 

マッパーについての詳しい説明は 私のブログ .