json字符串与对象之间的相互转化
序列化:对象转化为json字符串
反序列化:json字符串转化为对象
注意:需要jar包 jackson-databind-2.4.2
import java.util.ArrayList;
import java.util.List;
import com.fasterxml.jackson.databind.JsonNode;
import com.fasterxml.jackson.databind.ObjectMapper;
public class Testjson {
private static final ObjectMapper MAPPER= new ObjectMapper();
public static void main(String[] args) throws Exception {
//1.序列化,将对象转化为字符串 MAPPER.writeValueAsString
pojo p=new pojo();
p.setId(12);
p.setName("乐视");
String objstr=MAPPER.writeValueAsString(p);
System.out.println("序列化对象转化为json字符串:"+objstr);
//2.序列化集合 ,创建集合,往集合中添加元素
List<pojo> list=new ArrayList<pojo>();
for(int i=0;i<5;i++) {
pojo p1=new pojo();
p1.setId(i);
p1.setName("lsh"+i);
list.add(p1);
}
String objStrList=MAPPER.writeValueAsString(list);
System.out.println("对象集合转化为json字符串:"+objStrList);
//3.反序列化,将json字符串转化为对象 MAPPER.readValue(字符串, 类);
String objStr="{\"id\":7,\"name\":\"流星雨\"}";//斜杠\表示转义字符,复制时有些编译器会自己添加,没有要手动添加
pojo objToStr=MAPPER.readValue(objStr, pojo.class);//底层其实就是反射
System.out.println("反序列化json字符串转化为对象:"+objToStr);
//4.反序列化集合 创建json集合字符串
String objStringList="[{\"id\":0,\"name\":\"lsh0\"},"
+ "{\"id\":1,\"name\":\"lsh1\"}]";
//json字符串转化为jsonNode对象
JsonNode node=MAPPER.readTree(objStringList);
List<pojo> objPojoList=MAPPER.readValue(node.traverse(),
MAPPER.getTypeFactory()
.constructCollectionType(List.class, pojo.class));
System.out.println("反序列化对象集合:"+objPojoList);
}
}