diff --git a/jackson-core/src/main/java/io/micronaut/jackson/core/tree/JsonNodeTraversingParser.java b/jackson-core/src/main/java/io/micronaut/jackson/core/tree/JsonNodeTraversingParser.java index 12172334cb1..069f87961e6 100644 --- a/jackson-core/src/main/java/io/micronaut/jackson/core/tree/JsonNodeTraversingParser.java +++ b/jackson-core/src/main/java/io/micronaut/jackson/core/tree/JsonNodeTraversingParser.java @@ -257,6 +257,10 @@ public int getTextOffset() throws IOException { @Override public byte[] getBinaryValue(Base64Variant b64variant) throws IOException { + String text = getText(); + if (text != null) { + return b64variant.decode(text); + } return null; } diff --git a/jackson-core/src/test/groovy/io/micronaut/jackson/core/tree/JsonNodeTraversingParserTest.groovy b/jackson-core/src/test/groovy/io/micronaut/jackson/core/tree/JsonNodeTraversingParserTest.groovy new file mode 100644 index 00000000000..dade1a1f80a --- /dev/null +++ b/jackson-core/src/test/groovy/io/micronaut/jackson/core/tree/JsonNodeTraversingParserTest.groovy @@ -0,0 +1,28 @@ +package io.micronaut.jackson.core.tree + +import com.fasterxml.jackson.core.Base64Variant +import com.fasterxml.jackson.core.Base64Variants +import io.micronaut.json.tree.JsonNode +import spock.lang.Specification + +class JsonNodeTraversingParserTest extends Specification { + + def getBinaryValue() { + given: + def jsonNode = JsonNode.createArrayNode([JsonNode.createStringNode(content)]) + def parser = new JsonNodeTraversingParser(jsonNode) + + parser.nextToken() + parser.nextToken() + + def binaryValue = parser.getBinaryValue(Base64Variants.MIME) + + expect: + new String(binaryValue) == expected + + where: + content || expected + "YWJj" || "abc" + } + +}