Skip to content

Commit fd3994b

Browse files
committed
support @JsonIgnore for jackson
1 parent b1d8a61 commit fd3994b

8 files changed

Lines changed: 119 additions & 41 deletions

File tree

src/test/java/com/jsoniter/TestAnnotation.java

Lines changed: 0 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -28,17 +28,6 @@ public void tearDown() {
2828
JsoniterAnnotationSupport.disable();
2929
}
3030

31-
public static class TestObject1 {
32-
@JsonIgnore
33-
public int field2;
34-
}
35-
36-
public void test_ignore() throws IOException {
37-
JsonIterator iter = JsonIterator.parse("{'field2': 100}".replace('\'', '"'));
38-
TestObject1 obj = iter.read(TestObject1.class);
39-
assertEquals(0, obj.field2);
40-
}
41-
4231
public static class TestObject2 {
4332
private int field1;
4433

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
package com.jsoniter;
2+
3+
import com.jsoniter.annotation.JsonIgnore;
4+
import com.jsoniter.annotation.JsoniterAnnotationSupport;
5+
import junit.framework.TestCase;
6+
7+
import java.io.IOException;
8+
9+
public class TestAnnotationJsonIgnore extends TestCase {
10+
11+
public void setUp() {
12+
JsoniterAnnotationSupport.enable();
13+
}
14+
15+
public void tearDown() {
16+
JsoniterAnnotationSupport.disable();
17+
}
18+
19+
public static class TestObject1 {
20+
@JsonIgnore
21+
public int field2;
22+
}
23+
24+
public void test_ignore() throws IOException {
25+
JsonIterator iter = JsonIterator.parse("{'field2': 100}".replace('\'', '"'));
26+
TestObject1 obj = iter.read(TestObject1.class);
27+
assertEquals(0, obj.field2);
28+
}
29+
}

src/test/java/com/jsoniter/TestJackson.java

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,13 @@
11
package com.jsoniter;
22

33
import com.fasterxml.jackson.annotation.JsonAnySetter;
4+
import com.fasterxml.jackson.annotation.JsonIgnore;
45
import com.fasterxml.jackson.annotation.JsonProperty;
6+
import com.fasterxml.jackson.core.JsonProcessingException;
57
import com.fasterxml.jackson.databind.ObjectMapper;
8+
import com.fasterxml.jackson.databind.SerializationFeature;
69
import com.jsoniter.annotation.JacksonAnnotationSupport;
10+
import com.jsoniter.output.JsonStream;
711
import junit.framework.TestCase;
812

913
import java.io.IOException;
@@ -59,4 +63,16 @@ public void test_JsonProperty() throws IOException {
5963
obj = JsonIterator.deserialize("{\"field-1\":\"hello\"}", TestObject2.class);
6064
assertEquals("hello", obj.field1);
6165
}
66+
67+
public static class TestObject3 {
68+
@JsonIgnore
69+
public String field1;
70+
}
71+
72+
public void test_JsonIgnore() throws IOException {
73+
TestObject3 obj = objectMapper.readValue("{\"field1\":\"hello\"}", TestObject3.class);
74+
assertNull(obj.field1);
75+
obj = JsonIterator.deserialize("{\"field1\":\"hello\"}", TestObject3.class);
76+
assertNull(obj.field1);
77+
}
6278
}
Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
1+
package com.jsoniter.output;
2+
3+
import com.jsoniter.annotation.JsonIgnore;
4+
import com.jsoniter.annotation.JsoniterAnnotationSupport;
5+
import junit.framework.TestCase;
6+
7+
import java.io.ByteArrayOutputStream;
8+
import java.io.IOException;
9+
10+
public class TestAnnotationJsonIgnore extends TestCase {
11+
12+
private ByteArrayOutputStream baos;
13+
private JsonStream stream;
14+
15+
public void setUp() {
16+
JsoniterAnnotationSupport.enable();
17+
baos = new ByteArrayOutputStream();
18+
stream = new JsonStream(baos, 4096);
19+
}
20+
21+
public void tearDown() {
22+
JsoniterAnnotationSupport.disable();
23+
}
24+
25+
public static class TestObject1 {
26+
@JsonIgnore
27+
public int field1;
28+
}
29+
30+
public void test_ignore() throws IOException {
31+
TestObject1 obj = new TestObject1();
32+
obj.field1 = 100;
33+
stream.writeVal(obj);
34+
stream.close();
35+
assertEquals("{}", baos.toString());
36+
}
37+
}

src/test/java/com/jsoniter/output/TestAnnotation.java renamed to src/test/java/com/jsoniter/output/TestGenerics.java

Lines changed: 1 addition & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,12 @@
11
package com.jsoniter.output;
22

3-
import com.jsoniter.annotation.JsonIgnore;
43
import com.jsoniter.annotation.JsoniterAnnotationSupport;
54
import junit.framework.TestCase;
65

76
import java.io.ByteArrayOutputStream;
87
import java.io.IOException;
98

10-
public class TestAnnotation extends TestCase {
9+
public class TestGenerics extends TestCase {
1110
static {
1211
// JsonStream.setMode(EncodingMode.DYNAMIC_MODE);
1312
}
@@ -25,33 +24,6 @@ public void tearDown() {
2524
JsoniterAnnotationSupport.disable();
2625
}
2726

28-
public static class TestObject3 {
29-
@JsonIgnore
30-
public int field1;
31-
}
32-
33-
public void test_ignore() throws IOException {
34-
TestObject3 obj = new TestObject3();
35-
obj.field1 = 100;
36-
stream.writeVal(obj);
37-
stream.close();
38-
assertEquals("{}", baos.toString());
39-
}
40-
41-
public static class TestObject4 {
42-
public int field1;
43-
44-
public int getField1() {
45-
return field1;
46-
}
47-
}
48-
49-
public void test_name_conflict() throws IOException {
50-
TestObject4 obj = new TestObject4();
51-
stream.writeVal(obj);
52-
stream.close();
53-
assertEquals("{\"field1\":0}", baos.toString());
54-
}
5527

5628
public interface TestObject6Interface<A> {
5729
A getHello();

src/test/java/com/jsoniter/output/TestJackson.java

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,11 @@
11
package com.jsoniter.output;
22

33
import com.fasterxml.jackson.annotation.JsonAnyGetter;
4+
import com.fasterxml.jackson.annotation.JsonIgnore;
45
import com.fasterxml.jackson.annotation.JsonProperty;
56
import com.fasterxml.jackson.core.JsonProcessingException;
67
import com.fasterxml.jackson.databind.ObjectMapper;
8+
import com.fasterxml.jackson.databind.SerializationFeature;
79
import com.jsoniter.annotation.JacksonAnnotationSupport;
810
import junit.framework.TestCase;
911

@@ -52,4 +54,19 @@ public void test_JsonProperty() throws JsonProcessingException {
5254
output = JsonStream.serialize(obj);
5355
assertEquals("{\"field-1\":\"hello\"}", output);
5456
}
57+
58+
public static class TestObject3 {
59+
@JsonIgnore
60+
public String field1;
61+
}
62+
63+
public void test_JsonIgnore() throws JsonProcessingException {
64+
objectMapper.disable(SerializationFeature.FAIL_ON_EMPTY_BEANS);
65+
TestObject3 obj = new TestObject3();
66+
obj.field1 = "hello";
67+
String output = objectMapper.writeValueAsString(obj);
68+
assertEquals("{}", output);
69+
output = JsonStream.serialize(obj);
70+
assertEquals("{}", output);
71+
}
5572
}

src/test/java/com/jsoniter/output/TestObject.java

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -237,4 +237,20 @@ public void test_omit_null() {
237237
obj.field3 = "hello";
238238
assertEquals("{\"field3\":\"hello\"}", JsonStream.serialize(obj));
239239
}
240+
241+
242+
public static class TestObject12 {
243+
public int field1;
244+
245+
public int getField1() {
246+
return field1;
247+
}
248+
}
249+
250+
public void test_name_conflict() throws IOException {
251+
TestObject12 obj = new TestObject12();
252+
stream.writeVal(obj);
253+
stream.close();
254+
assertEquals("{\"field1\":0}", baos.toString());
255+
}
240256
}

src/test/java/com/jsoniter/suite/AllTestCases.java

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,12 +11,14 @@
1111

1212
@RunWith(Suite.class)
1313
@Suite.SuiteClasses({
14+
com.jsoniter.TestAnnotationJsonIgnore.class,
15+
com.jsoniter.output.TestAnnotationJsonIgnore.class,
1416
com.jsoniter.TestAnnotationJsonProperty.class,
1517
com.jsoniter.output.TestAnnotationJsonProperty.class,
1618
TestAnnotationJsonWrapper.class,
1719
TestAnnotationJsonUnwrapper.class,
1820
TestAnnotation.class,
19-
com.jsoniter.output.TestAnnotation.class,
21+
com.jsoniter.output.TestGenerics.class,
2022
TestCustomizeType.class, TestDemo.class,
2123
TestExisting.class, TestGenerics.class, TestGenerics.class, TestIO.class, TestNested.class,
2224
TestObject.class, TestReadAny.class, TestReflection.class, TestSkip.class, TestSlice.class,

0 commit comments

Comments
 (0)