Skip to content

Instantly share code, notes, and snippets.

@silmeth
Created January 25, 2018 18:21
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save silmeth/876ad145ee7bad85f42d20fd1c2a5f61 to your computer and use it in GitHub Desktop.
Save silmeth/876ad145ee7bad85f42d20fd1c2a5f61 to your computer and use it in GitHub Desktop.
test if [jackson-module-kotlin @JsonIgnore issue](https://github.com/FasterXML/jackson-module-kotlin/issues/124) is also triggered in Java
import com.fasterxml.jackson.annotation.JsonCreator;
import com.fasterxml.jackson.annotation.JsonIgnore;
import com.fasterxml.jackson.annotation.JsonProperty;
import com.fasterxml.jackson.databind.ObjectMapper;
import org.junit.jupiter.api.Test;
import static org.junit.jupiter.api.Assertions.assertEquals;
class JacksonTest1 {
@Test
void test() throws Exception {
final ObjectMapper objMapper = new ObjectMapper();
final Foo deserialized = objMapper.readValue("{\"name\": \"foo\", \"query\": \"bar\"}", Foo.class);
System.out.println(deserialized);
final String serialized = objMapper.writeValueAsString(deserialized);
System.out.println(serialized);
assertEquals("{\"name\":\"foo\",\"query\":\"bar\"}", serialized);
}
private static class NonSerializable {
NonSerializable(final Object obj) { }
@Override
public String toString() {
return "NonSerializable";
}
}
private static class Foo {
@JsonProperty("name") public final String name;
@JsonIgnore public final NonSerializable query;
@JsonProperty("query") public final String rawQuery;
Foo(final String name, final NonSerializable query, final String rawQuery) {
this.name = name;
this.query = query;
this.rawQuery = rawQuery;
}
@JsonCreator
Foo(@JsonProperty("name") final String name, @JsonProperty("query") final String rawQuery) {
this(name, new NonSerializable(rawQuery), rawQuery);
}
@Override
public String toString() {
return "Foo(name = " + name + ", query = " + query + ", rawQuery = " + rawQuery + ")";
}
}
}
import com.fasterxml.jackson.annotation.JsonCreator;
import com.fasterxml.jackson.annotation.JsonIgnore;
import com.fasterxml.jackson.annotation.JsonProperty;
import com.fasterxml.jackson.databind.ObjectMapper;
import org.junit.jupiter.api.Test;
import static org.junit.jupiter.api.Assertions.assertEquals;
class JacksonTest {
@Test
void test() throws Exception {
final ObjectMapper objMapper = new ObjectMapper();
final Foo deserialized = objMapper.readValue("{\"name\": \"foo\", \"query\": \"bar\"}", Foo.class);
System.out.println(deserialized);
final String serialized = objMapper.writeValueAsString(deserialized);
System.out.println(serialized);
assertEquals("{\"name\":\"foo\",\"query\":\"bar\"}", serialized);
}
private static class NonSerializable {
NonSerializable(final Object obj) { }
@Override
public String toString() {
return "NonSerializable";
}
}
private static class Foo {
private final String name;
private final NonSerializable query;
private final String rawQuery;
Foo(final String name, final NonSerializable query, final String rawQuery) {
this.name = name;
this.query = query;
this.rawQuery = rawQuery;
}
@JsonCreator
Foo(@JsonProperty("name") final String name, @JsonProperty("query") final String rawQuery) {
this(name, new NonSerializable(rawQuery), rawQuery);
}
@Override
public String toString() {
return "Foo(name = " + name + ", query = " + query + ", rawQuery = " + rawQuery + ")";
}
@JsonProperty("name")
public String getName() {
return name;
}
@JsonIgnore
public NonSerializable getQuery() {
return query;
}
@JsonProperty("query")
public String getRawQuery() {
return rawQuery;
}
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment