<dependencies>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-core</artifactId>
<version>2.12.3</version>
</dependency>
</dependencies>
public class Person {
private String name;
private int age;
// getters and setters
}
import com.fasterxml.jackson.core.JsonGenerator;
import com.fasterxml.jackson.databind.JsonSerializer;
import com.fasterxml.jackson.databind.SerializerProvider;
import java.io.IOException;
public class PersonSerializer extends JsonSerializer<Person> {
@Override
public void serialize(Person person, JsonGenerator jgen, SerializerProvider serializers) throws IOException {
jgen.writeStartObject();
jgen.writeStringField("name", person.getName());
jgen.writeNumberField("age", person.getAge());
jgen.writeEndObject();
}
}
import com.fasterxml.jackson.core.JsonParser;
import com.fasterxml.jackson.databind.DeserializationContext;
import com.fasterxml.jackson.databind.JsonDeserializer;
import java.io.IOException;
public class PersonDeserializer extends JsonDeserializer<Person> {
@Override
public Person deserialize(JsonParser jp, DeserializationContext ctxt) throws IOException {
String name = jp.getCodec().readTree(jp).get("name").asText();
int age = jp.getCodec().readTree(jp).get("age").asInt();
return new Person(name, age);
}
}
import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.databind.module.SimpleModule;
public class Main {
public static void main(String[] args) {
ObjectMapper objectMapper = new ObjectMapper();
SimpleModule module = new SimpleModule();
module.addSerializer(Person.class, new PersonSerializer());
module.addDeserializer(Person.class, new PersonDeserializer());
objectMapper.registerModule(module);
Person person = new Person("John Doe", 30);
try {
String json = objectMapper.writeValueAsString(person);
System.out.println("Serialized JSON: " + json);
Person deserializedPerson = objectMapper.readValue(json, Person.class);
System.out.println("Deserialized Person: " + deserializedPerson);
} catch (Exception e) {
e.printStackTrace();
}
}
}