-
-
Notifications
You must be signed in to change notification settings - Fork 820
Closed
Labels
2.21Issues planned (at earliest) for 2.21Issues planned (at earliest) for 2.21
Milestone
Description
This is a follow up issue of #700 .
If using FilteringParserDelegate to filter out a part of json, it throws the following exception when the input json is an empty list ("[]").
com.fasterxml.jackson.databind.exc.MismatchedInputException: No content to map due to end-of-input
at [Source: (byte[])"[]"; line: 1, column: 2]
at com.fasterxml.jackson.databind.exc.MismatchedInputException.from(MismatchedInputException.java:59)
at com.fasterxml.jackson.databind.ObjectMapper._initForReading(ObjectMapper.java:4688)
at com.fasterxml.jackson.databind.ObjectMapper._readValue(ObjectMapper.java:4561)
at com.fasterxml.jackson.databind.ObjectMapper.readValue(ObjectMapper.java:2823)
at com.alibaba.dapr.serialization.json.FilteringParserDelegateTest.testFilteringParserDelegateWithEmptyList(FilteringParserDelegateTest.java:36)
Test case:
package com.alibaba.dapr.serialization.json;
import com.fasterxml.jackson.core.JsonParser;
import com.fasterxml.jackson.core.filter.FilteringParserDelegate;
import com.fasterxml.jackson.core.filter.TokenFilter;
import com.fasterxml.jackson.core.type.TypeReference;
import com.fasterxml.jackson.databind.ObjectMapper;
import org.junit.Test;
import java.io.IOException;
import java.nio.charset.StandardCharsets;
import java.util.List;
import java.util.Map;
import static org.junit.Assert.assertTrue;
public class FilteringParserDelegateTest {
@Test
public void testFilteringParserDelegateWithEmptyList() throws IOException {
ObjectMapper mapper = new ObjectMapper();
final TokenFilter tokenFilter = new TokenFilter() {
@Override
public TokenFilter includeProperty(String name) {
if ("@type".equals(name)) {
return null;
}
return INCLUDE_ALL;
}
};
byte[] content = "[]".getBytes(StandardCharsets.UTF_8);
JsonParser jp = mapper.createParser(content);
JsonParser jsonParser = new FilteringParserDelegate(jp, tokenFilter, TokenFilter.Inclusion.INCLUDE_ALL_AND_PATH, true);
List<Map<String, String>> a = mapper.readValue(jsonParser, new TypeReference<List<Map<String, String>>>() {});
assertTrue(a.isEmpty());
}
}Jackson version: 2.12.3
Metadata
Metadata
Assignees
Labels
2.21Issues planned (at earliest) for 2.21Issues planned (at earliest) for 2.21