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);
}
}
|