Jackson Full Data Binding: Difference between revisions
Jump to navigation
Jump to search
Line 58: | Line 58: | ||
<span id="generic_type_information"></span>To enable generic type information (like "Map<String,Object>"), you have to use TypeReference container as explained above. | <span id="generic_type_information"></span>To enable generic type information (like "Map<String,Object>"), you have to use TypeReference container as explained above. | ||
{{External|[https://github.com/NovaOrdis/playground/blob/master/json/jackson/full-data-binding-and-generics/src/main/java/io/novaordis/playground/json/jackson/fulldatabinding/Main.java Full Data Binding and Generics Example]}} |
Revision as of 22:17, 26 February 2017
Internal
Overview
JSON to Java
import com.fasterxml.jackson.databind.ObjectMapper; InputStream is = ...; ObjectMapper mapper = new ObjectMapper(); Root root = mapper.readValue(is, Root.class);
This is a generic conversion method, assuming that the JSON content matches the internal structure of the type <T>:
public static <T> T fromJson(String json, Class<? extends T> c) throws JsonConversionException { try { ObjectMapper objectMapper = new ObjectMapper(); return objectMapper.readValue(new ByteArrayInputStream(json.getBytes()), c); } catch (Exception e) { throw new JsonConversionException(e); } }
Java to JSON
ObjectMapper will introspect a Java object coded according to the Java Beans conventions and output it as JSON content.
The method names (without the "get") will be used as field names.
Example:
import com.fasterxml.jackson.databind.ObjectMapper; ByteArrayOutputStream baos = new ByteArrayOutputStream(); ObjectMapper mapper = new ObjectMapper(); Root root = ... // some hierarchical object mapper.writeValue(baos, root); System.out.println(new String(baos.toByteArray()));
Code Example
Generics Handling
To enable generic type information (like "Map<String,Object>"), you have to use TypeReference container as explained above.