基本使用以及高级特性测试
写在前面
一、简单操作
1.1、String to Object
/** * json string to Object * * @throws JsonProcessingException */
@Test
public void t1() throws JsonProcessingException {
String carJson = "{ " +
"\"brand\" : \"Mercedes\"," +
"\"doors\" : 5 " +
"}";
Car car = objectMapper.readValue(carJson, Car.class);
System.out.println("car brand = " + car.getBrand());
System.out.println("car doors = " + car.getDoors());
System.out.println(objectMapper.writeValueAsString(car));
}
/** * Car{brand='ford', doors=0} * Car{brand='Fiat', doors=0} * * @throws IOException */
@Test
public void t2_2() throws IOException {
String jsonArray = "[{\"brand\":\"ford\"}, {\"brand\":\"Fiat\"}]";
ObjectMapper objectMapper = new ObjectMapper();
List<Car> cars1 = objectMapper.readValue(jsonArray, new TypeReference<List<Car>>() {
});
cars1.forEach(System.out::println);
}
1.2、file to Object
/** * json File to Object * <p> * {"brand":"Mercedes","doors":5} * * @throws JsonProcessingException */
@Test
public void t2() throws IOException {
File file = new File("D:\\GitRepository\\multiProject\\Jackson\\src\\test\\resources\\json\\car.json");
Car car = objectMapper.readValue(file, Car.class);
System.out.println(objectMapper.writeValueAsString(car));
}
/** * { * "brand": "Mercedes", * "doors": 5 * } * tonels.domian.Car@78e67e0a * * @throws IOException */
@Test
public void t2_1() throws IOException {
String resource = "json/car.json";
InputStream is = Thread.currentThread().getContextClassLoader().getResourceAsStream(resource);
String text = IOUtils.toString(is);
System.out.println(text);
final Car car = objectMapper.readValue(text, Car.class);
System.out.println(car.toString());
}
1.3、string to map
/** * {brand=ford, doors=5} * * @throws IOException */
@Test
public void t2_3() throws IOException {
String jsonObject = "{\"brand\":\"ford\", \"doors\":5}";
ObjectMapper objectMapper = new ObjectMapper();
Map<String, Object> jsonMap = objectMapper.readValue(jsonObject,
new TypeReference<Map<String, Object>>() {
});
System.out.println(jsonMap);
}
1.4、写测试1
/** * 写测试 * @throws IOException */
@Test
public void t3() throws IOException {
Car car = new Car();
car.setBrand("BMW" );
car.setDoors(4) ;
objectMapper.writeValue(
new FileOutputStream("json/output-2.json"), car);
}
1.5、写测试2
/** * {"brand":"BMW","doors":4} * @throws IOException */
@Test
public void t3_1() throws IOException {
Car car = new Car();
car.setBrand("BMW" );
car.setDoors(4) ;
String json = objectMapper.writeValueAsString(car);
System.out.println(json);
}
1.6、时间转换1
/** * {"type":"transfer","date":1591519578900} * @throws IOException */
@Test
public void t4() throws IOException {
Transaction transaction = new Transaction("transfer", new Date());
String output = objectMapper.writeValueAsString(transaction);
System.out.println(output);
}
1.7、时间转换2
/** * {"type":"transfer","date":"2020-06-07"} * @throws IOException */
@Test
public void t4_1() throws IOException {
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");
objectMapper.setDateFormat(dateFormat);
Transaction transaction = new Transaction("transfer", new Date());
String output2 = objectMapper.writeValueAsString(transaction);
System.out.println(output2);
}
1.8、jsonNode
/** * * brand = Mercedes * doors = 5 * john = * field = value * @throws IOException */
@Test
public void t5_1() throws IOException {
String carJson =
"{ \"brand\" : \"Mercedes\", \"doors\" : 5," +
" \"owners\" : [\"John\", \"Jack\", \"Jill\"]," +
" \"nestedObject\" : { \"field\" : \"value\" } }";
try {
JsonNode jsonNode = objectMapper.readValue(carJson, JsonNode.class);
JsonNode brandNode = jsonNode.get("brand");
String brand = brandNode.asText();
System.out.println("brand = " + brand);
JsonNode doorsNode = jsonNode.get("doors");
int doors = doorsNode.asInt();
System.out.println("doors = " + doors);
JsonNode array = jsonNode.get("owners");
JsonNode jsonNode1 = array.get(0);
String john = jsonNode.asText();
System.out.println("john = " + john);
JsonNode child = jsonNode.get("nestedObject");
JsonNode childField = child.get("field");
String field = childField.asText();
System.out.println("field = " + field);
} catch (IOException e) {
e.printStackTrace();
}
}
二、高级特性
这里主要包括 SerializationFeature 和 DeserializationFeature 两个枚举对象
2.1、SerializationFeature
2.1.1、
2.2、DeserializationFeature
2.2.1、
待补充
三、注解使用
待补充