package com.jsoniter;
import com.fasterxml.jackson.annotation.JsonAnySetter;
import com.fasterxml.jackson.annotation.JsonIgnore;
import com.fasterxml.jackson.annotation.JsonProperty;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.jsoniter.extra.JacksonCompatibilityMode;
import junit.framework.TestCase;
import java.io.IOException;
public class TestJackson extends TestCase {
static {
// JsonIterator.setMode(DecodingMode.DYNAMIC_MODE_AND_MATCH_FIELD_WITH_HASH);
}
private ObjectMapper objectMapper;
public void setUp() {
objectMapper = new ObjectMapper();
}
public static class TestObject1 {
private int _id;
private String _name;
@JsonAnySetter
public void setProperties(String key, Object value) {
if (key.equals("name")) {
_name = (String) value;
} else if (key.equals("id")) {
_id = ((Number) value).intValue();
}
}
}
public void test_JsonAnySetter() throws IOException {
TestObject1 obj = objectMapper.readValue("{\"name\":\"hello\",\"id\":100}", TestObject1.class);
assertEquals("hello", obj._name);
assertEquals(100, obj._id);
obj = JsonIterator.deserialize(new JacksonCompatibilityMode.Builder().build(),
"{\"name\":\"hello\",\"id\":100}", TestObject1.class);
assertEquals("hello", obj._name);
assertEquals(100, obj._id);
}
public static class TestObject2 {
@JsonProperty("field-1")
public String field1;
}
public void test_JsonProperty() throws IOException {
TestObject2 obj = objectMapper.readValue("{\"field-1\":\"hello\"}", TestObject2.class);
assertEquals("hello", obj.field1);
obj = JsonIterator.deserialize(new JacksonCompatibilityMode.Builder().build(),
"{\"field-1\":\"hello\"}", TestObject2.class);
assertEquals("hello", obj.field1);
}
public static class TestObject3 {
@JsonIgnore
public String field1;
}
public void test_JsonIgnore() throws IOException {
TestObject3 obj = objectMapper.readValue("{\"field1\":\"hello\"}", TestObject3.class);
assertNull(obj.field1);
obj = JsonIterator.deserialize(new JacksonCompatibilityMode.Builder().build(),
"{\"field1\":\"hello\"}", TestObject3.class);
assertNull(obj.field1);
}
}