Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Improve failure message on encountering unknown key in JSON #2637

Open
qwwdfsad opened this issue Apr 17, 2024 · 2 comments
Open

Improve failure message on encountering unknown key in JSON #2637

qwwdfsad opened this issue Apr 17, 2024 · 2 comments

Comments

@qwwdfsad
Copy link
Member

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

@sandwwraith
Copy link
Member

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

@qwwdfsad
Copy link
Member Author

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

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

2 participants