Jackson ObjectMapper对象
1、导入pom依赖
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>2.10.1</version>
</dependency>
2、使用ObjectMapper进行读写
使用ObjectMapper的readValue 方法将JSON内容反序列化为Java对象。同样,我们可也以使用ObjectMapper的writeValue 方法将Java对象序列化为JSON。
2.1、Java对象转JSON
使用objectMapper.writeValue(File resultFile,Object object)方法将Java对象序列到JSON文件中:
File resultFile = new File("target/car.json");
ObjectMapper objectMapper = new ObjectMapper();
Car car = new Car("BMW", "Black");
objectMapper.writeValue(resultFile, car);
将Java对象转换为字符串或字节数组,可以使用ObjectMapper
类的writeValueAsString
和writeValueAsBytes
方法:
String carAsString = objectMapper.writeValueAsString(car);
2.2、JSON转Java对象
使用objectMapper.readValue将JSON字符串转换为Java对象:
ObjectMapper objectMapper = new ObjectMapper();
String jsonString = "{\"name\":\"BMW\",\"color\":\"Black\"}";
Car car = objectMapper.readValue(jsonString, Car.class);
assertNotNull(car);
System.out.println(car);
2.3、JSON转JsonNode
可以将JSON解析为_JsonNode_对象,然后从JsonNode对象中获取数据:
ObjectMapper objectMapper = new ObjectMapper();
String jsonString = "{\"name\":\"BMW\",\"color\":\"Black\"}";
JsonNode jsonNode = objectMapper.readTree(jsonString);
assertNotNull(jsonNode);
System.out.println(jsonNode); //{"name":"BMW","color":"Black"}
System.out.println(jsonNode.get("name")); //“BMW"
System.out.println(jsonNode.get("name").asText()); //BMW
2.4、JSON数组字符串解析为Java List
使用_TypeReference_将数组形式的JSON解析为Java List:
String resourceJson = "[{ \"name\" : \"BMW\", \"color\" : \"Black\" },{ \"name\" : \"toyota\", \"color\" : \"Red\" }]";
ObjectMapper objectMapper = new ObjectMapper();
List<Car> listCar = objectMapper.readValue(resourceJson, new TypeReference<List<Car>>() {});
for (final Car car : listCar) {
System.out.println(car);
}
2.5、JSON字符串解析为Java Map
将JSON解析为Java Map:
String jsonString = "{\"name\":\"BMW\",\"color\":\"Black\"}";
ObjectMapper objectMapper = new ObjectMapper();
Map<String, Object> map = objectMapper.readValue(jsonString, new TypeReference<Map<String, Object>>() {
});
System.out.println(map); //{name=BMW, color=Black}