kotlinx.serialization icon indicating copy to clipboard operation
kotlinx.serialization copied to clipboard

Improve failure message on encountering unknown key in JSON

Open qwwdfsad opened this issue 10 months ago • 2 comments

Right now, the failure is the following:

Exception in thread "main" kotlinx.serialization.json.internal.JsonDecodingException: Unexpected JSON token at offset 20: Encountered an unknown key 'version' at path: $.name
Use 'ignoreUnknownKeys = true' in 'Json {}' builder to ignore unknown keys.
JSON input: {"name":"unknown", "version": 2.0}
	at kotlinx.serialization.json.internal.JsonExceptionsKt.JsonDecodingException(JsonExceptions.kt:24)

Maybe it is worth making it more explicit and straightforward, for example:

Exception in thread "main" kotlinx.serialization.json.internal.JsonUnknownKeyException: Encountered an unknown key 'version' at path: $.name
Use 'ignoreUnknownKeys = true' in 'Json {}' builder to ignore unknown keys.
JSON input: {"name":"unknown", "version": 2.0}
	at kotlinx.serialization.json.internal.JsonExceptionsKt.JsonDecodingException(JsonExceptions.kt:24)

Note that the actual exception can still be internal

qwwdfsad avatar Apr 17 '24 12:04 qwwdfsad

The version you suggest lacks an offset, which may be important for large json inputs which do not fit in the hint

sandwwraith avatar Apr 17 '24 14:04 sandwwraith

Well, it can be put after the main message. The problem with the current one is that it first explains where things went wrong instead of what went wrong

qwwdfsad avatar Apr 17 '24 14:04 qwwdfsad