All null JSON fields get masked
If some field is `null`, it gets replaced by `XXX` by default. I couldn't find any way to change it other than copy-pasting and tweaking `JsonBodyFilters`.

```
public static void main(String[] args) {
    val result = BodyFilters.defaultValue().filter(MediaType.APPLICATION_JSON_UTF8_VALUE, "{\\n" +
            "  \\"myRandomField\\": null\\n" +
            "}");
    System.out.println(result);
}
```
Prints this:
`{"myRandomField":"XXX"}`
diff --git a/logbook-json/src/main/java/org/zalando/logbook/json/JsonBodyFilters.java b/logbook-json/src/main/java/org/zalando/logbook/json/JsonBodyFilters.java
index a9f32ad0..0e951e14 100644
--- a/logbook-json/src/main/java/org/zalando/logbook/json/JsonBodyFilters.java
+++ b/logbook-json/src/main/java/org/zalando/logbook/json/JsonBodyFilters.java
@@ -27,7 +27,6 @@ public final class JsonBodyFilters {
         return replaceJsonStringProperty(properties, "XXX");
     }
 
-
     /**
      * Creates a {@link BodyFilter} that replaces the properties in the json response with the replacement passed as argument.
      * This {@link BodyFilter} works on all levels inside the json tree and it only works with string values<br><br>
@@ -61,7 +60,7 @@ public final class JsonBodyFilters {
     private static BodyFilter replacePrimitiveJsonProperty(final Set<String> properties, final String value, final String replacement) {
         final String regex = properties.stream().map(Pattern::quote).collect(joining("|"));
         final String property = "\\"(?:" + regex + ")\\"";
-        final Pattern pattern = compile("(" + property + "\\\\s*:\\\\s*)" + value + "|null");
+        final Pattern pattern = compile("(" + property + "\\\\s*:\\\\s*)(" + value + "|null)");
         final UnaryOperator<String> delegate = body -> pattern.matcher(body).replaceAll("$1" + replacement);
 
         return (contentType, body) ->
diff --git a/logbook-json/src/test/java/org/zalando/logbook/json/JsonBodyFiltersTest.java b/logbook-json/src/test/java/org/zalando/logbook/json/JsonBodyFiltersTest.java
index 2abb91b9..df0e93f6 100644
--- a/logbook-json/src/test/java/org/zalando/logbook/json/JsonBodyFiltersTest.java
+++ b/logbook-json/src/test/java/org/zalando/logbook/json/JsonBodyFiltersTest.java
@@ -93,6 +93,15 @@ class JsonBodyFiltersTest {
         assertThat(actual, is("{\\"foo\\":\\"XXX\\",\\"bar\\":\\"public\\"}"));
     }
 
+    @Test
+    void shouldFilterMatchingNullPropertyOnly() {
+        final BodyFilter unit = replaceJsonStringProperty(singleton("foo"), "XXX");
+
+        final String actual = unit.filter(contentType, "{\\"foo\\":null,\\"bar\\":null}");
+
+        assertThat(actual, is("{\\"foo\\":\\"XXX\\",\\"bar\\":null}"));
+    }
+
     @Test
     void shouldFilterAccessTokens() {
         final BodyFilter unit = new AccessTokenBodyFilter();
['logbook-json/src/test/java/org/zalando/logbook/json/JsonBodyFiltersTest.java', 'logbook-json/src/main/java/org/zalando/logbook/json/JsonBodyFilters.java']