jackson實現json與對象,集合,map之間的轉換

jackson是一個比較常用的json轉換工具,功能很強大,本文爲其基本方法的demo,實現的功能如題

package commonsTest;
 
import java.io.IOException;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
 
import models.Person;
 
import org.codehaus.jackson.JsonGenerationException;
import org.codehaus.jackson.map.JsonMappingException;
import org.codehaus.jackson.map.ObjectMapper;
import org.codehaus.jackson.type.TypeReference;
import org.junit.Test;
 
 
/**
 * jackson實現json與對象,集合,map之間的轉換
 */
public class Demo3 {
    
    /**
     * 將map轉換成json字符串
     * {"age":23,"name":"張三","addr":"北京"}
     * @throws Exception
     */
    @Test
    public void test1() throws Exception{
        Map<String,Object> map = new HashMap<String,Object>();
        map.put("name", "張三");
        map.put("age", 23);
        map.put("addr", "北京");
        ObjectMapper mapper = new ObjectMapper();
        String string = mapper.writeValueAsString(map);
        System.out.println(string);
    }
    
    /**
     * json字符串轉換成map對象
     * {name=張三, age=23, addr=北京}
     * @throws Exception
     */
    @Test
    public void test2() throws Exception{
        String str = "{\"name\":\"張三\",\"age\":23,\"addr\":\"北京\"}";
        ObjectMapper mapper = new ObjectMapper();
        Map readValue = mapper.readValue(str, Map.class);
        System.out.println(readValue);
    }
    
    /**
     * 將對象轉換成json字符串
     * {"name":"張三","age":23,"addr":"北京"}
     * @throws Exception
     */
    @Test
    public void test3() throws Exception{
        Person p = new Person("張三",23,"北京");
        ObjectMapper mapper = new ObjectMapper();
        String string = mapper.writeValueAsString(p);
        System.out.println(string);
    }
    
    /**
     * 將json字符串轉換爲對象
     * Person [name=張三, age=23, addr=北京]
     * @throws Exception
     */
    @Test
    public void test4() throws Exception{
        String str = "{\"name\":\"張三\",\"age\":23,\"addr\":\"北京\"}";
        ObjectMapper mapper = new ObjectMapper();
        Person readValue = mapper.readValue(str, Person.class);
        System.out.println(readValue);
    }
    
    /**
     * 將數組轉換成json字符串
     * [{"name":"張三","age":23,"addr":"北京"},{"name":"李四","age":24,"addr":"北京"},{"name":"王五","age":25,"addr":"北京"}]
     * @throws Exception
     */
    @Test
    public void test5() throws Exception{
        Person p1 = new Person("張三",23,"北京");
        Person p2 = new Person("李四",24,"北京");
        Person p3 = new Person("王五",25,"北京");
        Person[] persons = {p1,p2,p3};
        ObjectMapper mapper = new ObjectMapper();
        String string = mapper.writeValueAsString(persons);
        System.out.println(string);
    }
    
    /**
     * 將字符串轉換成數組
     * Person [name=張三, age=23, addr=北京]  Person [name=李四, age=24, addr=北京]  Person [name=王五, age=25, addr=北京]  
     * @throws Exception
     */
    @Test
    public void test6() throws Exception{
        String str = "[{\"addr\":\"北京\",\"age\":23,\"name\":\"張三\"},{\"addr\":\"北京\",\"age\":24,\"name\":\"李四\"},{\"addr\":\"北京\",\"age\":25,\"name\":\"王五\"}]";
        ObjectMapper mapper = new ObjectMapper();
        Person[] persons = mapper.readValue(str,new TypeReference<Person[]>(){});
        String content = "";
        for (Person person : persons) {
            content+=person.toString()+"  ";
        }
        System.out.println(content);
    }
    
    
    /**
     * 將集合轉換成json字符串
     * [{"name":"張三","age":23,"addr":"北京"},{"name":"李四","age":24,"addr":"北京"},{"name":"王五","age":25,"addr":"北京"}]
     * @throws Exception
     */
    @Test
    public void test7() throws Exception{
        List<Person> list = new ArrayList<Person>();
        Person p1 = new Person("張三",23,"北京");
        Person p2 = new Person("李四",24,"北京");
        Person p3 = new Person("王五",25,"北京");
        list.add(p1);
        list.add(p2);
        list.add(p3);
        ObjectMapper mapper = new ObjectMapper();
        String string = mapper.writeValueAsString(list);
        System.out.println(string);
    }
    
    /**
     * 將json字符串轉換成集合
     * [Person [name=張三, age=23, addr=北京], Person [name=李四, age=24, addr=北京], Person [name=王五, age=25, addr=北京]]
     * @throws Exception
     */
    @Test
    public void test8() throws Exception{
        String str = "[{\"addr\":\"北京\",\"age\":23,\"name\":\"張三\"},{\"addr\":\"北京\",\"age\":24,\"name\":\"李四\"},{\"addr\":\"北京\",\"age\":25,\"name\":\"王五\"}]";
        ObjectMapper mapper = new ObjectMapper();
        List<Person> persons = mapper.readValue(str,new TypeReference<List<Person>>(){});
        System.out.println(persons);
    }
    
    /**
     * 複雜數據的轉換,map轉json
     * {"message":"傳輸數據","data":[{"name":"張三","age":23,"addr":"北京"},{"name":"李四","age":24,"addr":"北京"},{"name":"王五","age":25,"addr":"北京"}]}
     * @throws Exception
     */
    @Test
    public void test9() throws Exception{
        List<Person> list = new ArrayList<Person>();
        Person p1 = new Person("張三",23,"北京");
        Person p2 = new Person("李四",24,"北京");
        Person p3 = new Person("王五",25,"北京");
        list.add(p1);
        list.add(p2);
        list.add(p3);
        Map<String,Object> map = new HashMap<String, Object>();
        map.put("data", list);
        map.put("message", "傳輸數據");
        ObjectMapper mapper = new ObjectMapper();
        String string = mapper.writeValueAsString(map);
        System.out.println(string);
    }
    
    /**
     * 複雜數據的轉換,從json中得到傳輸數據
     * [{name=張三, age=23, addr=北京}, {name=李四, age=24, addr=北京}, {name=王五, age=25, addr=北京}]
     * @throws Exception
     */
    @Test
    public void test10() throws Exception{
        String str = "{\"message\":\"傳輸數據\",\"data\":[{\"name\":\"張三\",\"age\":23,\"addr\":\"北京\"},{\"name\":\"李四\",\"age\":24,\"addr\":\"北京\"},{\"name\":\"王五\",\"age\":25,\"addr\":\"北京\"}]}";
        ObjectMapper mapper = new ObjectMapper();
        Map readValue = mapper.readValue(str,Map.class);
        List list = (List) readValue.get("data");
        System.out.println(list);
    }
    
}
 
 

 

 

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