Skip to content

Commit 51b4e4d

Browse files
authored
Fix #708 (#1495)
1 parent 1c1914c commit 51b4e4d

File tree

3 files changed

+17
-11
lines changed

3 files changed

+17
-11
lines changed

release-notes/VERSION-2.x

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,8 +18,11 @@ a pure JSON library.
1818

1919
#363: UTF-8 decoding should fail on Surrogate characters (0xD800 - 0xDFFF)
2020
(fix by @cowtowncoder, w/ Claude code)
21-
#1180: `JsonLocation` off for unrecognized tokens
21+
#708: `FilteringParserDelegate` cannot deserialize empty list
22+
(reported by @xiazuojie)
2223
(fix by @cowtowncoder, w/ Claude code)
24+
#1180: `JsonLocation` off for unrecognized tokens
25+
(fix by @cowtowncoder, w/ Claude code)
2326
#1470: Add method `copyCurrentStructureExact()` to `JsonGenerator`
2427
(contributed by Lars H)
2528
#1477: Add `JsonGenerator.has(StreamWriteCapability)` convenience method

src/main/java/com/fasterxml/jackson/core/filter/FilteringParserDelegate.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -671,7 +671,7 @@ protected final JsonToken _nextToken2() throws IOException
671671
boolean returnEnd = _headContext.isStartHandled();
672672
f = _headContext.getFilter();
673673
if ((f != null) && (f != TokenFilter.INCLUDE_ALL)) {
674-
boolean includeEmpty = f.includeEmptyArray(_headContext.hasCurrentName());
674+
boolean includeEmpty = f.includeEmptyObject(_headContext.hasCurrentName());
675675
f.filterFinishObject();
676676
if (includeEmpty) {
677677
return _nextBuffered(_headContext);

src/test/java/com/fasterxml/jackson/core/tofix/ParserFilterEmpty708Test.java renamed to src/test/java/com/fasterxml/jackson/core/filter/ParserFilterEmpty708Test.java

Lines changed: 12 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,9 @@
1-
package com.fasterxml.jackson.core.tofix;
1+
package com.fasterxml.jackson.core.filter;
22

33
import org.junit.jupiter.api.Test;
44

55
import com.fasterxml.jackson.core.*;
6-
import com.fasterxml.jackson.core.filter.FilteringParserDelegate;
7-
import com.fasterxml.jackson.core.filter.TokenFilter;
86
import com.fasterxml.jackson.core.filter.TokenFilter.Inclusion;
9-
import com.fasterxml.jackson.core.testutil.failure.JacksonTestFailureExpected;
107

118
import static org.junit.jupiter.api.Assertions.assertNull;
129

@@ -17,7 +14,17 @@ class ParserFilterEmpty708Test extends JUnit5TestBase
1714
static class IncludeAllFilter extends TokenFilter {
1815
@Override
1916
public TokenFilter includeProperty(String name) {
20-
return this;
17+
return TokenFilter.INCLUDE_ALL;
18+
}
19+
20+
@Override
21+
public boolean includeEmptyArray(boolean contentsFiltered) {
22+
return true;
23+
}
24+
25+
@Override
26+
public boolean includeEmptyObject(boolean contentsFiltered) {
27+
return true;
2128
}
2229
}
2330

@@ -30,12 +37,10 @@ public TokenFilter includeProperty(String name) {
3037
private final JsonFactory JSON_F = newStreamFactory();
3138

3239
// [core#708]
33-
@JacksonTestFailureExpected
3440
@Test
3541
void emptyArray() throws Exception
3642
{
3743
final String json = "[ ]";
38-
// should become: {"value":12}
3944
JsonParser p0 = _createParser(JSON_F, json);
4045
JsonParser p = new FilteringParserDelegate(p0,
4146
new IncludeAllFilter(),
@@ -50,12 +55,10 @@ void emptyArray() throws Exception
5055
}
5156

5257
// [core#708]
53-
@JacksonTestFailureExpected
5458
@Test
5559
void emptyObject() throws Exception
5660
{
5761
final String json = "{ }";
58-
// should become: {"value":12}
5962
JsonParser p0 = _createParser(JSON_F, json);
6063
JsonParser p = new FilteringParserDelegate(p0,
6164
new IncludeAllFilter(),

0 commit comments

Comments
 (0)