她独立于任何编程语言(跨平台)、可读性高、易于生成和解析、体积轻量的文本格式,这些优雅的特性,让JSON成为非常理想的数据交换的语言。
不同语言之间的数据传递,最好的方式是String,Json就是String,但是它是有格式的;数据库中存储也可以使用Json格式存储
后台java从数据库查询到数据后,往往转换为List、Map、Set等,但是前台的javaScript无法识别,故通常:
List、Map、Set——>Json——>前台才可以解析
Json是有格式的,但是较为简单,仅仅是key-value对的形式,具体见Json官网:www.json.org
json序列化和反序列化的实现,主要依赖于包中提供的 ObjectMapper类
下面是一个简单的实例,原理比较简单:
public class JacksonUtil{
private JacksonUtil(){}
public static String beanToJson(Object obj) throws JsonProcessingException{
ObjectMapper objectMapper=new ObjectMapper();
return objectMapper.writeValeAsString(obj);
}
public static<T> jsonToBean(String json, Class<T> clz) throws IOException{
ObjectMapper objectMapper=new ObjectMapper();
if(json==null){
return object.readValue("{}", clz);
}
return objectMapper.readVale(json,clz);
}
/*
将json字符串转换为java对象,该对象可以只包含部分属性
*/
public static<T> jsonToBeanByMatchAttribute(String json, Class<T> clz)throws JsonParseException, JsonMappingException,IOException{
ObjectMapper objectMapper=new ObjectMapper();
if(json==null||json=""){
return null;
}
obectMapper.configure(DesrializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);
return objectMapper.readVale(json,clz);
}
}