简介Jackson是一套Java的数据处理工具,包括一流的JSON解析/生成库、匹配数据绑定库(用于类和JSON字符串之间的转换)、以及其他数据格式处理Avro、BSON、CBOR、CSV、Smile、(Java)Properties、Protobuf、XML或YAML编码数据的模块。三个核心模块Streaming(jackson-corepackage):定义了底层的streamingAPI,包括具体json的实现。注释(jackson-annotations包):包含标准的Jackson注释。Databind(jackson-databind包):实现数据绑定,依赖于Streaming和Annotations。(导入jackson-databind包会自动导入另外两个包)什么是序列化和反序列化Serialization(序列化):JSON对象->JSON字符串Deserialization(反序列化):JSON字符串->JSON对象Jackson序列化与反序列化Jackson序列化公共属性和默认的getter方法,所以如果是公共属性,就不需要getter方法,但是如果是私有属性,就需要标准的getter方法。Jackson反序列化了公共属性和getter方法,所以如果是公共属性,则不需要setter方法,但如果是私有属性,则需要标准的setter方法。当Jackson反序列化时,它默认使用无参数构造函数来创建对象。引入依赖一般情况下,com.fasterxml.jackson.corejackson-databind2.11.1引入jackson-databind它将关联jackson-annotations和jackson-core。SpringBoot下的spring-boot-starter-web包自带了jackson的核心类库,无需手动导入。ObjectMapper使用Jackson中的ObjectMapper对象进行序列化和反序列化操作。下面以Car作为类进行操作演示:publicclassCar{privateStringcolor;私有字符串类型;//标准getterssetters}序列化操作ObjectMapperobjectMapper=newObjectMapper();Carcar=newCar("yellow","renault");objectMapper.writeValue(newFile("target/car.json"),car);//序列化到文件StringcarAsString=objectMapper.writeValueAsString(car);//序列化成String反序列化操作JSON反序列化成JavaObjectStringjson="{\"color\":\"yellow\",\"type\":\"renault\"}";ObjectMappermapper=newObjectMapper();Carcar=mapper.readValue(json,Car.class);JSON反序列化成Jackson的JsonNodetypeStringjson="{\"color\":\"yellow\",\"type\":\"renault\"}";ObjectMappermapper=newObjectMapper();JsonNodejsonNode=mapper.readTree(json);Stringtype=jsonNode.get("type").asText();将JSNO数组反序列化为JavaList类型//方法一(推荐)StringjsonCarArray="[{\"color\":\"Black\",\"type\":\"BMW\"},{\"color\":\"Red\",\"type\":\"FIAT\"}]";ListlistCar=objectMapper.readValue(jsonCarArray,newTypeReference>(){});//方法2StringjsonCarArray="[{\"color\":\"Black\",\"type\":\"BMW\"},{\"color\":\"Red\",\"type\":\"FIAT\"}]";objectMapper.configure(DeserializationFeature.USE_JAVA_ARRAY_FOR_JSON_ARRAY,true);Car[]cars=objectMapper.readValue(jsonCarArray,Car[]。班级);JSON反序列化成Map类型Stringjson="{\"color\":\"Black\",\"type\":{\"a\":22},\"arr\":[\"aa\",\"bb\"]}";Mapmap=newObjectMapper().readValue(json,newTypeReference