Is there any way to convert a Map to a JSON representation using Jackson without writing to a file?

后端 未结 2 1934
野趣味
野趣味 2020-12-10 10:03

I\'m trying to use Jackson to convert a HashMap to a JSON representation.

However, all the ways I\'ve seen involve writing to a file and then reading it back, which

相关标签:
2条回答
  • 2020-12-10 10:43

    You can use a StringWriter.

    package test;
    
    import com.fasterxml.jackson.databind.ObjectMapper;
    
    import java.io.IOException;
    import java.io.StringWriter;
    import java.util.HashMap;
    import java.util.Map;
    
    public class StringWriterExample {
    
        private static ObjectMapper objectMapper = new ObjectMapper();
    
        public static void main(String[] args) throws IOException {
    
            Map<String,String> map = new HashMap<>();
            map.put("key1","value1");
            map.put("key2","value2");
    
            StringWriter stringWriter = new StringWriter();
    
            objectMapper.writeValue(stringWriter, map);
    
            System.out.println(stringWriter.toString());
        }
    }
    

    produces

    {"key2":"value2","key1":"value1"}
    
    0 讨论(0)
  • 2020-12-10 10:48

    Pass your Map to ObjectMapper.writeValueAsString(Object value)

    It's more efficient than using StringWriter, according to the docs:

    Method that can be used to serialize any Java value as a String. Functionally equivalent to calling writeValue(Writer,Object) with StringWriter and constructing String, but more efficient.

    Example

    import org.codehaus.jackson.map.ObjectMapper;
    import java.io.IOException;
    import java.util.HashMap;
    import java.util.Map;
    
    public class Example {
    
        public static void main(String[] args) throws IOException {
            Map<String,String> map = new HashMap<>();
            map.put("key1","value1");
            map.put("key2","value2");
    
            String mapAsJson = new ObjectMapper().writeValueAsString(map);
            System.out.println(mapAsJson);
        }
    }
    
    0 讨论(0)
提交回复
热议问题