fasterxml.jackson.

Jackson是Java中衆多json處理工具的一個,比起常見的Json-lib,Gson要快一些。


import com.fasterxml.jackson.core.JsonFactory;
import com.fasterxml.jackson.core.JsonGenerator;
import com.fasterxml.jackson.core.JsonProcessingException;




第一步 準備工具類
1.CommonUtil類負責new mapper
具體如下:
/**********************CommonUtil類*****************************************/
private static ObjectMapper mapper;  
public static synchronized ObjectMapper getMapperInstance(boolean createNew) {  
        if (createNew) {  
            return new ObjectMapper();  
        } else if (mapper == null) {  
            mapper = new ObjectMapper();  
        }  
        return mapper;  
 }
/**********************CommonUtil類*****************************************/
第二步 你的實體類 舉例子說明


/**********************Entity類*****************************************/
public class Person {  
    private String name;  
    private int age;  
  
    public Person() {  
    }  
  
    public Person(String name, int age) {  
        super();  
        this.name = name;  
        this.age = age;  
    }  
  
    public int getAge() {  
        return age;  
    }  
  
    public void setAge(int age) {  
        this.age = age;  
    }  
  
    public String getName() {  
        return name;  
    }  
  
    public void setName(String name) {  
        this.name = name;  
    }  
  
    @Override  
    public boolean equals(Object obj) {  
        if (this == obj) {  
            return true;  
        }  
        if (obj == null) {  
            return false;  
        }  
        if (getClass() != obj.getClass()) {  
            return false;  
        }  
        Person other = (Person) obj;  
        if (age != other.age) {  
            return false;  
        }  
        if (name == null) {  
            if (other.name != null) {  
                return false;  
            }  
        } else if (!name.equals(other.name)) {  
            return false;  
        }  
        return true;  
    }  
  
}  
/**********************Entity類*****************************************/


/**********************帶集合Entity類*****************************************/
public class TestVo {   
    private String voName;   
    private List<Person> pers;   
  
    public TestVo() {   
    }   
  
    public TestVo(String voName, List<Person> pers) {   
        super();   
        this.voName = voName;   
        this.pers = pers;   
    }   
  
    public String getVoName() {   
        return voName;   
    }   
  
    public void setVoName(String voName) {   
        this.voName = voName;   
    }   
  
    public List<Person> getPers() {   
        return pers;   
    }   
  
    public void setPers(List<Person> pers) {   
        this.pers = pers;   
    }   
  
    @Override  
    public boolean equals(Object obj) {   
        if (this == obj) {   
            return true;   
        }   
        if (obj == null) {   
            return false;   
        }   
        if (getClass() != obj.getClass()) {   
            return false;   
        }   
        TestVo other = (TestVo) obj;   
        if (pers == null) {   
            if (other.pers != null) {   
                return false;   
            }   
        } else if (pers.size() != other.pers.size()) {   
            return false;   
        } else {   
            for (int i = 0; i < pers.size(); i++) {   
                if (!pers.get(i).equals(other.pers.get(i))) {   
                    return false;   
                }   
            }   
        }   
        if (voName == null) {   
            if (other.voName != null) {   
                return false;   
            }   
        } else if (!voName.equals(other.voName)) {   
            return false;   
        }   
        return true;   
    }   
}  
/**********************帶集合Entity類*****************************************/


/**********************Bean2Json類*****************************************/
public static String beanToJson(Object obj) throws IOException {   
     
        ObjectMapper mapper = CommonUtil.getMapperInstance(false);   
        StringWriter writer = new StringWriter();   
        JsonGenerator gen = new JsonFactory().createJsonGenerator(writer);   
        mapper.writeValue(gen, obj);   
        gen.close();   
        String json = writer.toString();   
        writer.close();   
        return json;   
    }  
/**********************Bean2Json類*****************************************/


/**********************Json2Bean類*****************************************/
public static Object  jsonToBean(String json, Class<?> cls) throws Exception {   
    Object vo = mapper.readValue(json, cls);   
    return vo;   
}  
/**********************Json2Bean類*****************************************/


測試一下吧:


public static void main(String[] args) throws Exception {  
    // 準備數據  
    List<Person> pers = new ArrayList<Person>();  
    Person p = new Person("張三", 46);  
    pers.add(p);  
    p = new Person("李四", 19);  
    pers.add(p);  
    p = new Person("王二麻子", 23);  
    pers.add(p);  
    TestVo vo = new TestVo("一個容器而已", pers);  
    // 實體轉JSON字符串  
    String json = beanToJson(vo);  
    System.out.println("Bean>>>Json----" + json);  
    // 字符串轉實體  
    TestVo vo2 = (TestVo)jsonToBean(json, TestVo.class);  
    System.out.println("Json>>Bean--與開始的對象是否相等:" + vo2.equals(vo));  
  
}

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章