diff --git a/formats/json/commonMain/src/kotlinx/serialization/json/internal/JsonReader.kt b/formats/json/commonMain/src/kotlinx/serialization/json/internal/JsonReader.kt index 749cd74f3..e9b9ee742 100644 --- a/formats/json/commonMain/src/kotlinx/serialization/json/internal/JsonReader.kt +++ b/formats/json/commonMain/src/kotlinx/serialization/json/internal/JsonReader.kt @@ -144,14 +144,20 @@ internal class JsonReader(private val source: String) { ++current continue } - val tc = charToTokenClass(c) currentPosition = current - return tc == TC_STRING || tc == TC_OTHER || tc == TC_BEGIN_LIST || tc == TC_BEGIN_OBJ + return isValidValueStart(c) } currentPosition = current return false } + private fun isValidValueStart(c: Char): Boolean { + return when (c) { + '}', ']', ':', ',' -> false + else -> true + } + } + /* * Peeked string for coerced enums. * If the value was picked, 'consumeString' will take it without scanning the source.