本文介紹使用jackson來對json數據進行解析操做java
首先,須要去官網下載jackson,本文使用的是(jackson-all-1.9.11.jar)json
主要經過ObjectMapper對json進行處理app
1 package com.whroid.java.json; 2 3 import java.io.IOException; 4 5 6 import org.codehaus.jackson.JsonFactory; 7 import org.codehaus.jackson.JsonGenerationException; 8 import org.codehaus.jackson.JsonParseException; 9 import org.codehaus.jackson.map.JsonMappingException; 10 import org.codehaus.jackson.map.ObjectMapper; 11 import org.codehaus.jackson.map.SerializationConfig; 12 13 14 public class JacksonUtil { 15 16 ObjectMapper mObjectMapper; 17 JsonFactory mJsonFactory; 18 static JacksonUtil mJacksonUtil; 19 public static JacksonUtil getInstance() 20 { 21 if(mJacksonUtil == null) 22 { 23 mJacksonUtil = new JacksonUtil(); 24 } 25 return mJacksonUtil; 26 } 27 private JacksonUtil() 28 { 29 mObjectMapper = new ObjectMapper(); 30 mObjectMapper.configure(SerializationConfig.Feature.FAIL_ON_EMPTY_BEANS, false);//(禁止SerializationConfig.Feature.FAIL_ON_EMPTY_BEANS) 31 mJsonFactory = mObjectMapper.getJsonFactory(); 32 } 33 34 35 /** 36 * 將json字符串數據,轉換成cls類實例。須要保證cls類中的屬性和json中相對應,而且cls中必須有相應的getter()/setter()方法 37 * @param json 38 * @param cls 39 * @return 40 * @throws JsonParseException 41 * @throws IOException 42 */ 43 public <T extends Object> T jsonToObject(String json,Class<T> cls) throws JsonParseException, IOException 44 { 45 return mObjectMapper.readValue(json, cls); 46 } 47 /** 48 * 將實例對象,轉化成json字符串。須要保證cls類中的屬性和json中相對應,而且cls中必須有相應的getter()/setter()方法 49 * @param obj 50 * @return 51 * @throws JsonGenerationException 52 * @throws JsonMappingException 53 * @throws IOException 54 */ 55 public String objectToJson(Object obj) throws JsonGenerationException, JsonMappingException, IOException 56 { 57 return mObjectMapper.writeValueAsString(obj); 58 } 59 }
與json轉化的對象類JSONBean,須要添加getter()/setter()方法ide
1 package com.whroid.java.json; 2 3 import java.util.ArrayList; 4 import java.util.List; 5 6 7 public class JSONBean { 8 9 private String name = "name"; 10 private int id = 1; 11 private List<String> list = new ArrayList<String>(); 12 private boolean b; 13 SubBean subBean = new SubBean(); 14 public String getName() { 15 return name; 16 } 17 public void setName(String name) { 18 this.name = name; 19 } 20 21 public int getId() { 22 return id; 23 } 24 public void setId(int id) { 25 this.id = id; 26 } 27 28 public List<String> getList() { 29 return list; 30 } 31 public void setList(List<String> list) { 32 this.list = list; 33 } 34 public boolean isB() { 35 return b; 36 } 37 public void setB(boolean b) { 38 this.b = b; 39 } 40 public SubBean getSubBean() { 41 return subBean; 42 } 43 public void setSubBean(SubBean subBean) { 44 this.subBean = subBean; 45 } 46 @Override 47 public String toString() { 48 return "JSONBean [name=" + name + ", id=" + id + ", list=" + list 49 + ", b=" + b + ", subBean=" + subBean + "]"; 50 } 51 52 53 } 54 class SubBean{ 55 String subname = "subname"; 56 57 public String getSubname() { 58 return subname; 59 } 60 61 public void setSubname(String subname) { 62 this.subname = subname; 63 } 64 65 @Override 66 public String toString() { 67 return "SubBean [subname=" + subname + "]"; 68 } 69 70 }
調用this
1 public static void main(String[] args) { 2 3 JSONBean bean = new JSONBean(); 4 String jackson = null; 5 try { 6 jackson = JacksonUtil.getInstance().objectToJson(bean); 7 System.out.println("jackson:"+jackson); 8 9 bean = JacksonUtil.getInstance().jsonToObject(jackson, JSONBean.class); 10 System.out.println("bean:"+bean); 11 } catch (Exception e) { 12 e.printStackTrace(); 13 } 14 15 }
返回:spa
jackson:{"name":"name","id":1,"list":[],"b":false,"subBean":{"subname":"subname"}}code
//使用上面那段json解析後的對象
bean:JSONBean [name=name, id=1, list=[], b=false, subBean=SubBean [subname=subname]]對象