Jackson 简单使用记录
- https://github.com/FasterXML
- https://www.ibm.com/developerworks/cn/java/jackson-advanced-application/index.html
- https://www.baeldung.com/jackson
- http://tutorials.jenkov.com/java-json/jackson-objectmapper.html
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>2.10.1</version>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.datatype</groupId>
<artifactId>jackson-datatype-jsr310</artifactId>
<version>2.10.1</version>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.datatype</groupId>
<artifactId>jackson-datatype-jdk8</artifactId>
<version>2.10.1</version>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.datatype</groupId>
<artifactId>jackson-datatype-guava</artifactId>
<version>2.10.1</version>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.18.10</version>
<scope>provided</scope>
</dependency>
package morning.cat.jackson;
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.core.type.TypeReference;
import com.fasterxml.jackson.databind.JsonNode;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.databind.ObjectReader;
import com.fasterxml.jackson.databind.SerializationFeature;
import com.fasterxml.jackson.datatype.jdk8.Jdk8Module;
import com.fasterxml.jackson.datatype.jsr310.JavaTimeModule;
import morning.cat.jackson.model.DateModel;
import morning.cat.jackson.model.Person;
import morning.cat.jackson.model.User;
import org.junit.Test;
import java.io.IOException;
import java.time.LocalDateTime;
import java.util.Arrays;
import java.util.Date;
import java.util.HashMap;
import java.util.Map;
public class JacksonTest {
@Test
public void test1() throws JsonProcessingException {
ObjectMapper mapper = new ObjectMapper();
Map<String, Object> map = new HashMap<>();
map.put("name", "晨猫");
map.put("age", 25);
map.put("interests", new String[]{"宅", "music"});
String text = mapper.writeValueAsString(map);
System.out.println(text);
Map<String, Object> map2 = mapper.readValue(text, new TypeReference<Map<String, Object>>() {
});
System.out.println(map2);
JsonNode root = mapper.readTree(text);
String name = root.get("name").asText();
int age = root.get("age").asInt();
System.out.println("name:" + name + " \nage:" + age);
}
@Test
public void test2() throws JsonProcessingException {
ObjectMapper mapper = new ObjectMapper();
Person person = Person.builder()
.id(System.currentTimeMillis())
.name("zhang")
.count(7)
.price(23.89)
.bir1(new Date())
.array(new String[]{"hello", "世界"})
.list(Arrays.asList("你好", "world"))
.map(new HashMap<String, Object>() {{
put("Name", "Cat");
put("QQ", 2444159188L);
}})
.build();
String text = mapper.writeValueAsString(person);
System.out.println(text);
Person person1 = mapper.readValue(text, Person.class);
System.out.println(person1);
Person person2 = mapper.readValue(text, new TypeReference<Person>() {
});
System.out.println(person2);
}
@Test
public void test3() throws IOException {
ObjectMapper mapper = new ObjectMapper()
.registerModule(new JavaTimeModule())
.registerModule(new Jdk8Module());
mapper.enable(SerializationFeature.INDENT_OUTPUT);
DateModel dateModel = DateModel.builder()
.id(System.currentTimeMillis())
.bir1(new Date())
.createdAt(LocalDateTime.now())
.build();
byte[] bytes = mapper.writeValueAsBytes(dateModel);
System.out.println(new String(bytes));
DateModel dateModel1 = mapper.readValue(bytes, DateModel.class);
System.out.println(dateModel1);
}
@Test
public void test4() throws JsonProcessingException {
ObjectMapper mapper = new ObjectMapper();
ObjectReader objectReader = mapper.readerFor(User.class);
String text = mapper.writeValueAsString(User.builder().id(System.currentTimeMillis()).name("Tony").build());
JsonNode jsonNode = objectReader.readTree(text);
String name = jsonNode.get("name").asText();
System.out.println(name);
User user = objectReader.readValue(text);
System.out.println(user);
}
}