Skip to content

Commit ba35c17

Browse files
committed
Fix #1977
1 parent 1074386 commit ba35c17

File tree

3 files changed

+10
-2
lines changed

3 files changed

+10
-2
lines changed

release-notes/VERSION-2.x

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,8 @@ Project: jackson-databind
2323
(reported by ayushgp@github)
2424
#1947: `MapperFeature.AUTO_DETECT_XXX` do not work if all disabled
2525
(reported by Timur S)
26+
#1977: Serializing an Iterator with multiple sub-types fails after upgrading to 2.9.x
27+
(reported by ssivanand@github)
2628

2729
2.9.4 (24-Jan-2018)
2830

src/main/java/com/fasterxml/jackson/databind/ser/impl/IteratorSerializer.java

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -96,7 +96,6 @@ public void serializeContents(Iterator<?> value, JsonGenerator g,
9696
protected void _serializeDynamicContents(Iterator<?> value, JsonGenerator g,
9797
SerializerProvider provider) throws IOException
9898
{
99-
JsonSerializer<Object> serializer = _elementSerializer;
10099
final TypeSerializer typeSer = _valueTypeSerializer;
101100
PropertySerializerMap serializers = _dynamicSerializers;
102101
do {
@@ -106,7 +105,7 @@ protected void _serializeDynamicContents(Iterator<?> value, JsonGenerator g,
106105
continue;
107106
}
108107
Class<?> cc = elem.getClass();
109-
serializers.serializerFor(cc);
108+
JsonSerializer<Object> serializer = serializers.serializerFor(cc);
110109
if (serializer == null) {
111110
if (_elementType.hasGenericTypes()) {
112111
serializer = _findAndAddDynamic(serializers,

src/test/java/com/fasterxml/jackson/databind/ser/TestIterable.java

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -143,6 +143,13 @@ public void testWithIterator() throws IOException
143143
{
144144
assertEquals("{\"values\":[\"itValue\"]}",
145145
STATIC_MAPPER.writeValueAsString(new BeanWithIterator()));
146+
147+
// [databind#1977]
148+
ArrayList<Number> numbersList = new ArrayList<>();
149+
numbersList.add(1);
150+
numbersList.add(0.25);
151+
String json = MAPPER.writeValueAsString(numbersList.iterator());
152+
assertEquals("[1,0.25]", json);
146153
}
147154

148155
// [databind#358]

0 commit comments

Comments
 (0)