The ObjectMapper class is the main class of the Jackson library. It provides some functionality that will be converted to Java objects to match the JSON structure and vice versa. It uses instances of JsonParser and JsonGenerator to implement actual read/write of JSON.
Class Declaration
The following is the declaration of the org.codehaus.jackson.map.ObjectMapper class:
public class ObjectMapper extends ObjectCodec implements Versioned
Nested classes
| SN | Class & Description |
|---|---|
| 1 | static class ObjectMapper.DefaultTypeResolverBuilder//Customize TypeResolverBuilder, providing the so-called "default input" using type resolution builder (see enableDefaultTyping() for details). |
| 2 | static class ObjectMapper.DefaultTyping//Use enableDefaultTyping() enumeration to specify what type (class) the default input should be used. |
| SN | Constructor & Description |
|---|---|
| 1 | ObjectMapper()//Default constructor, which will build the default JsonFactory if necessary to use StdSerializerProvider as its SerializerProvider and BeanSerializerFactory as its SerializerFactory. |
| 2 | ObjectMapper(JsonFactory jf)//Construct the necessary JsonParsers and/or JsonGenerators maps using the specified JsonFactory. |
| 3 | ObjectMapper(JsonFactory jf, SerializerProvider sp, DeserializerProvider dp) |
| 4 | ObjectMapper(JsonFactory jf, SerializerProvider sp, DeserializerProvider dp, SerializationConfig sconfig, DeserializationConfig dconfig) |
| 5 | ObjectMapper(SerializerFactory sf) is not recommended. Use other constructs instead; note that you can set the serialization factory setSerializerFactory (org.codehaus.jackson.map.SerializerFactory) |
The basic code of the example test class is as follows
/* * @project java * @package * @file Jackson.java * @version 1.0 */ public class Jackson { /* * * Class Descripton goes here. * * @class Jackson * @version 1.0 */ public static JsonGenerator jsonGenerator = null; private static ObjectMapper mapper = new ObjectMapper(); public static void main(String[] args) { Student student = new Student(); student.setIsstudent(true); student.setUid(1000); student.setUname("xiao liao"); student.setUpwd("123"); student.setNumber(12); Map<String, Student> stuMap = new HashMap<String, Student>(); stuMap.put("1", student); stuMap.put("2", student); List<Object> stuList = new ArrayList<Object>(); List<Student> stuList1 = new ArrayList<Student>(); stuList1.add(student); student= new Student(); student.setIsstudent(false); student.setUid(200); student.setUname("xiao mi"); stuList1.add(student); stuList.add(student); stuList.add(stucent xin"); stuList.add("xiao er"); stuList.add(stuMap); //readJson2List(); try { //readJson2Array(); //writeArray2Json(array); //writeJson2List(); //writeEntity2Json(student); writeJson2Entity(); //writeMap2Json(stuMap); //writeList2Json(stuList1); } catch (IOException e) { e.printStackTrace(); } } /** * * <code>writeEntity2Json</code> * @description: TODO(Entity class converted to json) * @param object * @throws IOException */ public static void writeEntity2Json(Object object) throws IOException { mapper.writeValue( new File("D://developSoft//aaadowload//testjson1//lib//aa.txt"),object ); mapper.writeValue( System.out,object ); } /** * * <code>writeArray2Json</code> * @description: TODO(Array converted to json array) * @param object * @throws IOException */ public static void writeArray2Json(Object object) throws IOException { // writeValue has the same function as writeObject mappper.writeValue( new File("D://developSoft//aaadowload//testjson1//lib//aa.txt"),object ); mappper.writeValue(System.out,object ); } /** * * <code>writeMap2Json</code> * @description: TODO(map object is converted to json object) * @param object * @throws IOException * @since 2011-11-8 Liao Yiping*/ public static void writeMap2Json(Object object) throws IOException { System.out.println("Use ObjectMapper----------------"); // writeValue has the same function as writeObject System.out.println("==>"+mapper.writeValueAsString(object)); mapper.writeValue( new File("D://developSoft//aaadowload//testjson1//lib//aamap.txt"),object ); mapper.writeValue( System.out, object); } /** * * <code>writeList2Json</code> * @description: TODO(list converted to json) * @param object * @throws IOException */ public static void writeList2Json(Object object) throws IOException { System.out.println("==>"+mapper.writeValueAsString(object)); mapper.writeValue( new File("D://developSoft//aaadowload//testjson1//lib//aamap.txt"),object ); mapper.writeValue( System.out , object ); } /** * * <code>writeJson2Entity</code> * @description: TODO(json converted to entity) * @throws IOException */ public static void writeJson2Entity() throws IOException { System.out.println("json string converted to entity----------------"); // File file = new File("D://developSoft//aaadowload//testjson1//lib//aa.txt"); // FileInputStream inputStream = new FileInputStream(file); // Student student = mapper.readValue(inputStream,Student.class); // System.out.println(student.toString()); // Beautiful output//mapper.defaultPrettyPrintingWriter().writeValueAsString(value); String json = "{/"uid/":1000,/"uname/":/"xiao liao/",/"upwd/":/"123/",/"number/":12.0,/"isstudent/":true}"; Student student1 = mapper.readValue(json,Student.class); System.out.println("json2:"+student1.toString()); } /** * * <code>writeJson2List</code> * @description: TODO(json special list object) * @throws IOException */ public static void writeJson2List() throws IOException { System.out.println("json string to entity-------------------"); File file = new File("D://developSoft//aaadowload//testjson1//lib//aa.txt"); FileInputStream inputStream = new FileInputStream(file); Student student = mapper.readValue(inputStream,Student.class); System.out.println(student.toString()); String json = "[{/"uid/":1000,/"uname/":/"xiao liao/",/"upwd/":/"123/",/"number/":12.0,/"isstudent/":true},{/"uid/":200,/"uname/":/"xiao mi/",/"upwd/":null,/"number/":0.0,/"isstudent/":false}]"; List<LinkedHashMap<String, Object>> s= mapper.readValue(json,List.class); for (int i = 0; i < s.size(); i++) { LinkedHashMap<String, Object> link = s.get(i); Set<String> key = link.keySet(); for (Iterator iterator = key.iterator(); iterator.hasNext();) { String string = (String) iterator.next(); System.out.println(string+"==>"+link.get(string)); } System.out.println("json:"+i+""+s.get(i).toString()); } } /** * JSON is converted to List object*/ public static void readJson2List() { String json = "[{/"uid/":1,/"uname/":/"www/",/"number/":234,/"upwd/":/"456/"}," + "{/"uid/":5,/"uname/":/"tom/",/"number/":3.44,/"upwd/":/"123/"}]"; try { List<LinkedHashMap<String, Object>> list = mapper.readValue( json, List.class); System.out.println(list.size()); for (int i = 0; i < list.size(); i++) { Map<String, Object> map = list.get(i); Set<String> set = map.keySet(); for (Iterator<String> it = set.iterator(); it.hasNext();) { String key = it.next(); System.out.println(key + ":" + map.get(key)); } } } catch (JsonParseException e) { e.printStackTrace(); } catch (JsonMappingException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } } /** * JSON converted to List object*/ public static void readJson2Array() { String json = "[{/"uid/":1,/"uname/":/"www/",/"number/":234,/"upwd/":/"456/"}," + "{/"uid/":5,/"uname/":/"tom/",/"number/":3.44,/"upwd/":/"123/"}]"; try { Student[] students = mapper.readValue(json, Student[].class); for (Student student : students) { System.out.println(">"+student.toString()); } } catch (JsonParseException e) { e.printStackTrace(); } catch (JsonMappingException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } } }Print result:
串转换成entity-------------json2:uid=1000,name=xiao liao,upwd=123,number=12.0,isStudent=truewriteMap2Json -----------{"2":{"uid":1000,"uname":"xiao liao","upwd":"123","number":12.0,"isstudent":true},"1":{"uid":1000,"uname":"xiao liao","upwd":"123","number":12.0,"isstudent":true}}readJson2Array------------------------>uid=1,name=www,upwd=456,number=234.0,isStudent=false>uid=5,name=tom,upwd=123,number=3.44,isStudent=falsewriteMap2Json -------------{"2":{"uid":1000,"uname":"xiao liao","upwd":"123","number":12.0,"isstudent":true},"1":{"uid":1000,"uname":"xiao liao","upwd":"123","number":12.0,"isstudent":true}}Everyone, try it out by yourself, the above is also my test code