Skip to content

Commit b4c6e6d

Browse files
committed
ignoring static fields (#9)
1 parent 6e2d2af commit b4c6e6d

File tree

3 files changed

+19
-1
lines changed

3 files changed

+19
-1
lines changed

json-view/src/main/java/com/monitorjbl/json/JsonViewSerializer.java

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@
88

99
import java.io.IOException;
1010
import java.lang.reflect.Field;
11+
import java.lang.reflect.Modifier;
1112
import java.net.URI;
1213
import java.net.URL;
1314
import java.util.ArrayList;
@@ -224,6 +225,9 @@ void writeObject(Object obj) throws IOException {
224225
boolean fieldAllowed(Field field, Class declaringClass) {
225226
String name = field.getName();
226227
String prefix = currentPath.length() > 0 ? currentPath + "." : "";
228+
if(Modifier.isStatic(field.getModifiers())){
229+
return false;
230+
}
227231

228232
//search for matcher
229233
Match match = null;

json-view/src/test/java/com/monitorjbl/json/JsonViewSerializerTest.java

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -454,4 +454,15 @@ public void testEnums() throws Exception {
454454
assertNotNull(obj.get("testEnum"));
455455
assertEquals(ref.getTestEnum().toString(), obj.get("testEnum"));
456456
}
457+
458+
@Test
459+
public void testStaticFieldsAreIgnored() throws Exception {
460+
TestObject ref = new TestObject();
461+
ref.setStr1("val1");
462+
463+
String serialized = sut.writeValueAsString(JsonView.with(ref));
464+
Map<String, Object> obj = sut.readValue(serialized, HashMap.class);
465+
assertNull(obj.get("PUBLIC_FIELD"));
466+
assertNull(obj.get("PRIVATE_FIELD"));
467+
}
457468
}

json-view/src/test/java/com/monitorjbl/json/model/TestObject.java

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,10 @@
1111

1212
@JsonIgnoreProperties({"ignoredIndirect"})
1313
public class TestObject {
14-
public static enum TestEnum{VALUE_A,VALUE_B}
14+
public static enum TestEnum {VALUE_A, VALUE_B}
15+
16+
public static final String PUBLIC_FIELD = "public";
17+
private static final String PRIVATE_FIELD = "private";
1518

1619
private String str1;
1720
private String str2;

0 commit comments

Comments
 (0)