http://blog.csdn.net/wangyang2698341/article/details/8223929
今天自行研究了下json ,感觉非常好用,经过测试比google的GSON快多了
同时Jackson可以轻松的将Java对象转换成json对象和xml文档,同样也可以将json、xml转换成Java对象。功能非常的强悍!
大家也知道,json 在如今互联网时代应用的非常广,因为大家如此的关注,所以对json的解析性能要求也是非常高的。
一、 准备工作
1、 下载依赖库jar包
Jackson的jar all下载地址:http://jackson.codehaus.org/1.7.6/jackson-all-1.7.6.jar
然后在工程中导入这个jar包即可开始工作
官方示例:http://wiki.fasterxml.com/JacksonInFiveMinutes
因为下面的程序是用junit测试用例运行的,所以还得添加junit的jar包。版本是junit-4.2.8
如果你需要转换xml,那么还需要stax2-api.jar
2、 测试类基本代码如下
1 package jackJson.test; 2 3 import java.io.File; 4 import java.io.FileInputStream; 5 import java.io.IOException; 6 import java.util.ArrayList; 7 import java.util.HashMap; 8 import java.util.Iterator; 9 import java.util.LinkedHashMap; 10 import java.util.List; 11 import java.util.Map; 12 import java.util.Set; 13 14 import jackJson.test.pojo.Student; 15 16 import com.fasterxml.jackson.core.JsonGenerator; 17 import com.fasterxml.jackson.core.JsonParseException; 18 import com.fasterxml.jackson.databind.JsonMappingException; 19 import com.fasterxml.jackson.databind.JsonNode; 20 import com.fasterxml.jackson.databind.ObjectMapper; 21 import com.fasterxml.jackson.databind.SerializationConfig; 22 23 public class Jackson { 24 25 public static JsonGenerator jsonGenerator = null; 26 private static ObjectMapper mapper = new ObjectMapper(); 27 28 public static void main(String[] args) { 29 Student student = new Student(); 30 student.setIsstudent(true); 31 student.setUid(1000); 32 student.setUname("xiao liao"); 33 student.setUpwd("123"); 34 student.setNumber(12); 35 36 Map<String, Student> stuMap = new HashMap<String, Student>(); 37 stuMap.put("1", student); 38 stuMap.put("2", student); 39 40 List<Object> stuList = new ArrayList<Object>(); 41 List<Student> stuList1 = new ArrayList<Student>(); 42 stuList1.add(student); 43 student= new Student(); 44 student.setIsstudent(false); 45 student.setUid(200); 46 student.setUname("xiao mi"); 47 stuList1.add(student); 48 49 stuList.add(student); 50 stuList.add("xiao xin"); 51 stuList.add("xiao er"); 52 stuList.add(stuMap); 53 // readJson2List(); 54 // readJson2Array(); 55 try { 56 57 //writeArray2Json(array); 58 writeJson2List(); 59 //writeEntity2Json(student); 60 //writeJson2Entity(); 61 //writeMap2Json(stuMap); 62 //writeList2Json(stuList1); 63 64 } catch (IOException e) { 65 e.printStackTrace(); 66 } 67 } 68 /** 69 * 70 * <code>writeEntity2Json</code> 71 * @description: TODO(实体类转换成json) 72 * @param object 73 * @throws IOException 74 * @since 2011-11-8 廖益平 75 */ 76 public static void writeEntity2Json(Object object) throws IOException { 77 mapper.writeValue( new File("D:\\developSoft\\aaadowload\\testjson1\\lib\\aa.txt"),object ); 78 mapper.writeValue( System.out,object ); 79 80 } 81 /** 82 * 83 * <code>writeArray2Json</code> 84 * @description: TODO(数组转换成json数组) 85 * @param object 86 * @throws IOException 87 * @since 2011-11-8 廖益平 88 */ 89 public static void writeArray2Json(Object object) throws IOException { 90 91 // writeValue具有和writeObject相同的功能 92 mapper.writeValue( new File("D:\\developSoft\\aaadowload\\testjson1\\lib\\aa.txt"),object ); 93 mapper.writeValue(System.out,object ); 94 95 } 96 /** 97 * 98 * <code>writeMap2Json</code> 99 * @description: TODO(map对象转换成json对象) 100 * @param object 101 * @throws IOException 102 * @since 2011-11-8 廖益平 103 */ 104 public static void writeMap2Json(Object object) throws IOException { 105 106 System.out.println("使用ObjectMapper-----------"); 107 // writeValue具有和writeObject相同的功能 108 System.out.println("==>"+mapper.writeValueAsString(object)); 109 mapper.writeValue( new File("D:\\developSoft\\aaadowload\\testjson1\\lib\\aamap.txt"),object ); 110 mapper.writeValue( System.out , object ); 111 } 112 /** 113 * 114 * <code>writeList2Json</code> 115 * @description: TODO(list转换成json) 116 * @param object 117 * @throws IOException 118 * @since 2011-11-8 廖益平 119 */ 120 public static void writeList2Json(Object object) throws IOException { 121 System.out.println("==>"+mapper.writeValueAsString(object)); 122 mapper.writeValue( new File("D:\\developSoft\\aaadowload\\testjson1\\lib\\aamap.txt"),object ); 123 mapper.writeValue( System.out , object ); 124 } 125 /** 126 * 127 * <code>writeJson2Entity</code> 128 * @description: TODO(json转换成实体) 129 * @throws IOException 130 * @since 2011-11-8 廖益平 131 */ 132 public static void writeJson2Entity() throws IOException { 133 System.out.println("json串转换成entity-------------"); 134 // File file = new File("D:\\developSoft\\aaadowload\\testjson1\\lib\\aa.txt"); 135 // FileInputStream inputStream = new FileInputStream(file); 136 // Student student = mapper.readValue(inputStream,Student.class); 137 // System.out.println(student.toString()); 138 //漂亮输出 139 //mapper.defaultPrettyPrintingWriter().writeValueAsString(value); 140 141 String json = "{\"uid\":1000,\"uname\":\"xiao liao\",\"upwd\":\"123\",\"number\":12.0,\"isstudent\":true}"; 142 Student student1 = mapper.readValue(json,Student.class); 143 System.out.println("json2:"+student1.toString()); 144 } 145 /** 146 * 147 * <code>writeJson2List</code> 148 * @description: TODO(json专程list对象) 149 * @throws IOException 150 * @since 2011-11-8 廖益平 151 */ 152 public static void writeJson2List() throws IOException { 153 System.out.println("json串转换成entity-------------"); 154 File file = new File("D:\\developSoft\\aaadowload\\testjson1\\lib\\aa.txt"); 155 FileInputStream inputStream = new FileInputStream(file); 156 Student student = mapper.readValue(inputStream,Student.class); 157 System.out.println(student.toString()); 158 159 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}]"; 160 List<LinkedHashMap<String, Object>> s= mapper.readValue(json,List.class); 161 for (int i = 0; i < s.size(); i++) { 162 LinkedHashMap<String, Object> link = s.get(i); 163 Set<String> key = link.keySet(); 164 for (Iterator iterator = key.iterator(); iterator.hasNext();) { 165 String string = (String) iterator.next(); 166 System.out.println(string+"==>"+link.get(string)); 167 168 } 169 System.out.println("json:"+i+""+s.get(i).toString()); 170 171 } 172 } 173 /** 174 * JSON转换为List对象 175 */ 176 public static void readJson2List() { 177 String json = "[{\"uid\":1,\"uname\":\"www\",\"number\":234,\"upwd\":\"456\"}," 178 + "{\"uid\":5,\"uname\":\"tom\",\"number\":3.44,\"upwd\":\"123\"}]"; 179 try { 180 List<LinkedHashMap<String, Object>> list = mapper.readValue(json, List.class); 181 System.out.println(list.size()); 182 for (int i = 0; i < list.size(); i++) { 183 Map<String, Object> map = list.get(i); 184 Set<String> set = map.keySet(); 185 for (Iterator<String> it = set.iterator(); it.hasNext();) { 186 String key = it.next(); 187 System.out.println(key + ":" + map.get(key)); 188 } 189 } 190 } catch (JsonParseException e) { 191 e.printStackTrace(); 192 } catch (JsonMappingException e) { 193 e.printStackTrace(); 194 } catch (IOException e) { 195 e.printStackTrace(); 196 } 197 } 198 /** 199 * JSON转换为List对象 200 */ 201 public static void readJson2Array() { 202 String json = "[{\"uid\":1,\"uname\":\"www\",\"number\":234,\"upwd\":\"456\"}," 203 + "{\"uid\":5,\"uname\":\"tom\",\"number\":3.44,\"upwd\":\"123\"}]"; 204 try { 205 Student[] students = mapper.readValue(json, Student[].class); 206 for (Student student : students) { 207 System.out.println(">"+student.toString()); 208 } 209 } catch (JsonParseException e) { 210 e.printStackTrace(); 211 } catch (JsonMappingException e) { 212 e.printStackTrace(); 213 } catch (IOException e) { 214 e.printStackTrace(); 215 } 216 } 217 218 219 }
1 package jackJson.test.pojo; 2 3 public class Student { 4 5 private Integer uid; 6 private String uname; 7 private String upwd; 8 private Integer number; 9 private Boolean isstudent; 10 public Integer getUid() { 11 return uid; 12 } 13 public void setUid(Integer uid) { 14 this.uid = uid; 15 } 16 public String getUname() { 17 return uname; 18 } 19 public void setUname(String uname) { 20 this.uname = uname; 21 } 22 public String getUpwd() { 23 return upwd; 24 } 25 public void setUpwd(String upwd) { 26 this.upwd = upwd; 27 } 28 public Integer getNumber() { 29 return number; 30 } 31 public void setNumber(Integer number) { 32 this.number = number; 33 } 34 public Boolean getIsstudent() { 35 return isstudent; 36 } 37 public void setIsstudent(Boolean isstudent) { 38 this.isstudent = isstudent; 39 } 40 @Override 41 public String toString() { 42 return "Student [uid=" + uid + ", uname=" + uname + ", upwd=" + upwd 43 + ", number=" + number + ", isstudent=" + isstudent + "]"; 44 } 45 46 }