How to convert a JSON string to a Map<String, String> with Jackson JSON How to convert a JSON string to a Map<String, String> with Jackson JSON java java

How to convert a JSON string to a Map<String, String> with Jackson JSON


[Update Sept 2020] Although my original answer here, from many years ago, seems to be helpful and is still getting upvotes, I now use the GSON library from Google, which I find to be more intuitive.

I've got the following code:

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

It's reading from a file, but mapper.readValue() will also accept an InputStream and you can obtain an InputStream from a string by using the following:

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

There's a bit more explanation about the mapper on my blog.


Try TypeFactory. Here's the code for Jackson JSON (2.8.4).

Map<String, String> result;ObjectMapper mapper;TypeFactory factory;MapType type;factory = TypeFactory.defaultInstance();type    = factory.constructMapType(HashMap.class, String.class, String.class);mapper  = new ObjectMapper();result  = mapper.readValue(data, type);

Here's the code for an older version of Jackson JSON.

Map<String, String> result = new ObjectMapper().readValue(    data, TypeFactory.mapType(HashMap.class, String.class, String.class));


Warning you get is done by compiler, not by library (or utility method).

Simplest way using Jackson directly would be:

HashMap<String,Object> props;// src is a File, InputStream, String or suchprops = new ObjectMapper().readValue(src, new TypeReference<HashMap<String,Object>>() {});// or:props = (HashMap<String,Object>) new ObjectMapper().readValue(src, HashMap.class);// or even just:@SuppressWarnings("unchecked") // suppresses typed/untype mismatch warnings, which is harmlessprops = new ObjectMapper().readValue(src, HashMap.class);

Utility method you call probably just does something similar to this.