diff --git a/spring-cloud-stream-tuple/src/main/java/org/springframework/cloud/stream/tuple/JsonNodeToTupleConverter.java b/spring-cloud-stream-tuple/src/main/java/org/springframework/cloud/stream/tuple/JsonNodeToTupleConverter.java index 3c35aec45..a083e0fb0 100644 --- a/spring-cloud-stream-tuple/src/main/java/org/springframework/cloud/stream/tuple/JsonNodeToTupleConverter.java +++ b/spring-cloud-stream-tuple/src/main/java/org/springframework/cloud/stream/tuple/JsonNodeToTupleConverter.java @@ -45,6 +45,15 @@ public class JsonNodeToTupleConverter implements Converter { else if (node.isArray()) { builder.addEntry(name, nodeToList(node)); } + else if (node.isNull()) { + builder.addEntry(name, null); + } + else if (node.isBoolean()) { + builder.addEntry(name, node.booleanValue()); + } + else if (node.isNumber()) { + builder.addEntry(name, node.numberValue()); + } else { builder.addEntry(name, node.asText()); } @@ -66,6 +75,15 @@ public class JsonNodeToTupleConverter implements Converter { else if (item.isArray()) { list.add(nodeToList(item)); } + else if (item.isNull()) { + list.add(null); + } + else if (item.isBoolean()) { + list.add(item.booleanValue()); + } + else if (item.isNumber()) { + list.add(item.numberValue()); + } else { list.add(item.asText()); } diff --git a/spring-cloud-stream-tuple/src/main/java/org/springframework/cloud/stream/tuple/JsonStringToTupleConverter.java b/spring-cloud-stream-tuple/src/main/java/org/springframework/cloud/stream/tuple/JsonStringToTupleConverter.java index bb682328b..dc54f1dfa 100644 --- a/spring-cloud-stream-tuple/src/main/java/org/springframework/cloud/stream/tuple/JsonStringToTupleConverter.java +++ b/spring-cloud-stream-tuple/src/main/java/org/springframework/cloud/stream/tuple/JsonStringToTupleConverter.java @@ -52,6 +52,15 @@ public class JsonStringToTupleConverter implements Converter { else if (node.isArray()) { builder.addEntry(name, nodeToList(node)); } + else if (node.isNull()) { + builder.addEntry(name, null); + } + else if (node.isBoolean()) { + builder.addEntry(name, node.booleanValue()); + } + else if (node.isNumber()) { + builder.addEntry(name, node.numberValue()); + } else { builder.addEntry(name, node.asText()); } @@ -73,6 +82,15 @@ public class JsonStringToTupleConverter implements Converter { else if (item.isArray()) { list.add(nodeToList(item)); } + else if (item.isNull()) { + list.add(null); + } + else if (item.isBoolean()) { + list.add(item.booleanValue()); + } + else if (item.isNumber()) { + list.add(item.numberValue()); + } else { list.add(item.asText()); } diff --git a/spring-cloud-stream-tuple/src/main/java/org/springframework/cloud/stream/tuple/TupleToJsonStringConverter.java b/spring-cloud-stream-tuple/src/main/java/org/springframework/cloud/stream/tuple/TupleToJsonStringConverter.java index 3eac16865..30d62b1f9 100644 --- a/spring-cloud-stream-tuple/src/main/java/org/springframework/cloud/stream/tuple/TupleToJsonStringConverter.java +++ b/spring-cloud-stream-tuple/src/main/java/org/springframework/cloud/stream/tuple/TupleToJsonStringConverter.java @@ -49,7 +49,10 @@ public class TupleToJsonStringConverter implements Converter { for (int i = 0; i < source.size(); i++) { Object value = source.getValues().get(i); String name = source.getFieldNames().get(i); - if (value != null) { + if (value == null) { + root.putNull(name); + } + else { if (value instanceof Tuple) { root.putPOJO(name, toObjectNode((Tuple) value)); }