in runtime/serde/serde-json/common/src/aws/smithy/kotlin/runtime/serde/json/JsonDeserializer.kt [132:162]
override fun findNextFieldIndex(): Int? {
val candidate = when (reader.peek()) {
JsonToken.EndObject -> {
// consume the token
reader.nextTokenOf<JsonToken.EndObject>()
null
}
JsonToken.EndDocument -> null
JsonToken.Null -> {
reader.nextTokenOf<JsonToken.Null>()
null
}
else -> {
val token = reader.nextTokenOf<JsonToken.Name>()
val propertyName = token.value
val field = descriptor.fields.find { it.serialName == propertyName }
field?.index ?: Deserializer.FieldIterator.UNKNOWN_FIELD
}
}
if (candidate != null) {
// found a field
if (reader.peek() == JsonToken.Null) {
// skip explicit nulls
reader.nextTokenOf<JsonToken.Null>()
return findNextFieldIndex()
}
}
return candidate
}