Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import com.fasterxml.jackson.core.JsonGenerator;
- import com.fasterxml.jackson.core.JsonProcessingException;
- import com.fasterxml.jackson.databind.ObjectMapper;
- import com.fasterxml.jackson.databind.SerializerProvider;
- import com.fasterxml.jackson.databind.annotation.JsonSerialize;
- import com.fasterxml.jackson.databind.ser.std.StdSerializer;
- import com.google.common.collect.ImmutableList;
- import org.checkerframework.checker.nullness.qual.MonotonicNonNull;
- import java.io.IOException;
- import java.util.UUID;
- public class JacksonMappers {
- private static final ObjectMapper mapper = new ObjectMapper();
- public static void main(String[] args) throws JsonProcessingException {
- ImmutableList<UUID> ids = ImmutableList.of(UUID.randomUUID(), UUID.randomUUID());
- MyObject object = new MyObject("Some arbitrary value.", ids);
- MyJacksonDto dto = new MyJacksonDto(object);
- String json = mapper.writeValueAsString(dto);
- System.out.println(json);
- }
- public static final class MySerializer extends StdSerializer<MyJacksonDto> {
- MySerializer() {
- super(MyJacksonDto.class);
- }
- @Override
- public void serialize(MyJacksonDto value,
- JsonGenerator gen,
- SerializerProvider provider)
- throws IOException {
- String flatJson = mapper.writeValueAsString(value.object);
- gen.writeStartObject();
- gen.writeObjectField("object", value.object);
- gen.writeStringField("flatJson", flatJson);
- gen.writeEndObject();
- }
- }
- @JsonSerialize(using = MySerializer.class)
- public static final class MyJacksonDto {
- private final MyObject object;
- private @MonotonicNonNull String flatJson;
- public MyJacksonDto(MyObject object) {
- this.object = object;
- }
- public String getFlatJson() {
- return flatJson;
- }
- public MyObject getObject() {
- return object;
- }
- }
- public static final class MyObject {
- private final String value;
- private final ImmutableList<UUID> ids;
- public MyObject(String value, ImmutableList<UUID> ids) {
- this.value = value;
- this.ids = ids;
- }
- public ImmutableList<UUID> getIds() {
- return ids;
- }
- public String getValue() {
- return value;
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment