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

Print out class name in error message about missing field #657

Closed
etolstoy opened this issue Jan 17, 2020 · 1 comment
Closed

Print out class name in error message about missing field #657

etolstoy opened this issue Jan 17, 2020 · 1 comment

Comments

@etolstoy
Copy link
Contributor

What is your use-case and why do you need this feature?
I have multiple classes with field id. When I get a serialization error it's pretty time consuming to understand where exactly is the problem. Here is an example:

kotlinx.serialization.MissingFieldException: Field 'id' is required, but it was missing
        at 0   SharedCode                          0x000000010a38fd83 kfun:kotlin.RuntimeException.<init>(kotlin.String?;kotlin.Throwable?)kotlin.RuntimeException + 115
        at 1   SharedCode                          0x000000010a620503 kfun:kotlinx.serialization.SerializationException.<init>(kotlin.String;kotlin.Throwable?)kotlinx.serialization.SerializationException + 115
        at 2   SharedCode                          0x000000010a62069d kfun:kotlinx.serialization.SerializationException.<init>(kotlin.String;kotlin.Throwable?;kotlin.Int;kotlin.native.internal.DefaultConstructorMarker)kotlinx.serialization.SerializationException + 381
        at 3   SharedCode                          0x000000010a620962 kfun:kotlinx.serialization.MissingFieldException.<init>(kotlin.String)kotlinx.serialization.MissingFieldException + 594
        at 4   SharedCode                          0x000000010a670f1d kfun:podlodka.mpp.model.Category.<init>(kotlin.Int;kotlin.String?;kotlin.String?;kotlin.String?;kotlin.collections.List<podlodka.mpp.model.ShortEpisode>?;kotlinx.serialization.SerializationConstructorMarker?)podlodka.mpp.model.Category + 509
        at 5   SharedCode                          0x000000010a66f3cb kfun:podlodka.mpp.model.Category.$serializer.deserialize(kotlinx.serialization.Decoder)podlodka.mpp.model.Category + 2123
        at 6   SharedCode                          0x000000010a653611 kfun:kotlinx.serialization.json.internal.decodeSerializableValuePolymorphic$kotlinx-serialization-runtime@kotlinx.serialization.json.JsonInput.(kotlinx.serialization.DeserializationStrategy<#GENERIC>)Generic + 2529
        at 7   SharedCode                          0x000000010a6543ef kfun:kotlinx.serialization.json.internal.StreamingJsonInput.decodeSerializableValue(kotlinx.serialization.DeserializationStrategy<#GENERIC>)Generic + 191
        at 8   SharedCode                          0x000000010a61fc47 kfun:kotlinx.serialization.ElementValueDecoder.decodeSerializableElement(kotlinx.serialization.SerialDescriptor;kotlin.Int;kotlinx.serialization.DeserializationStrategy<#GENERIC>)Generic + 263
        at 9   SharedCode                          0x000000010a62fff4 kfun:kotlinx.serialization.internal.ListLikeSerializer.readElement(kotlinx.serialization.CompositeDecoder;kotlin.Int;#GENERIC;kotlin.Boolean) + 516
        at 10  SharedCode                          0x000000010a62efaa kfun:kotlinx.serialization.internal.AbstractCollectionSerializer.readElement$default(kotlinx.serialization.CompositeDecoder;kotlin.Int;#GENERIC;kotlin.Boolean;kotlin.Int) + 474
        at 11  SharedCode                          0x000000010a62e852 kfun:kotlinx.serialization.internal.AbstractCollectionSerializer.patch(kotlinx.serialization.Decoder;#GENERIC)#GENERIC + 1826
        at 12  SharedCode                          0x000000010a62eb55 kfun:kotlinx.serialization.internal.AbstractCollectionSerializer.deserialize(kotlinx.serialization.Decoder)#GENERIC + 405
        at 13  SharedCode                          0x000000010a653611 kfun:kotlinx.serialization.json.internal.decodeSerializableValuePolymorphic$kotlinx-serialization-runtime@kotlinx.serialization.json.JsonInput.(kotlinx.serialization.DeserializationStrategy<#GENERIC>)Generic + 2529
        at 14  SharedCode                          0x000000010a6543ef kfun:kotlinx.serialization.json.internal.StreamingJsonInput.decodeSerializableValue(kotlinx.serialization.DeserializationStrategy<#GENERIC>)Generic + 191
        at 15  SharedCode                          0x000000010a61fc47 kfun:kotlinx.serialization.ElementValueDecoder.decodeSerializableElement(kotlinx.serialization.SerialDescriptor;kotlin.Int;kotlinx.serialization.DeserializationStrategy<#GENERIC>)Generic + 263
        at 16  SharedCode                          0x000000010a6738c1 kfun:podlodka.mpp.model.Episode.$serializer.deserialize(kotlinx.serialization.Decoder)podlodka.mpp.model.Episode + 3633
        at 17  SharedCode                          0x000000010a653611 kfun:kotlinx.serialization.json.internal.decodeSerializableValuePolymorphic$kotlinx-serialization-runtime@kotlinx.serialization.json.JsonInput.(kotlinx.serialization.DeserializationStrategy<#GENERIC>)Generic + 2529
        at 18  SharedCode                          0x000000010a6543ef kfun:kotlinx.serialization.json.internal.StreamingJsonInput.decodeSerializableValue(kotlinx.serialization.DeserializationStrategy<#GENERIC>)Generic + 191
        at 19  SharedCode                          0x000000010a61fc47 kfun:kotlinx.serialization.ElementValueDecoder.decodeSerializableElement(kotlinx.serialization.SerialDescriptor;kotlin.Int;kotlinx.serialization.DeserializationStrategy<#GENERIC>)Generic + 263
        at 20  SharedCode                          0x000000010a62fff4 kfun:kotlinx.serialization.internal.ListLikeSerializer.readElement(kotlinx.serialization.CompositeDecoder;kotlin.Int;#GENERIC;kotlin.Boolean) + 516
        at 21  SharedCode                          0x000000010a62efaa kfun:kotlinx.serialization.internal.AbstractCollectionSerializer.readElement$default(kotlinx.serialization.CompositeDecoder;kotlin.Int;#GENERIC;kotlin.Boolean;kotlin.Int) + 474
        at 22  SharedCode                          0x000000010a62e852 kfun:kotlinx.serialization.internal.AbstractCollectionSerializer.patch(kotlinx.serialization.Decoder;#GENERIC)#GENERIC + 1826
        at 23  SharedCode                          0x000000010a62eb55 kfun:kotlinx.serialization.internal.AbstractCollectionSerializer.deserialize(kotlinx.serialization.Decoder)#GENERIC + 405
        at 24  SharedCode                          0x000000010a653611 kfun:kotlinx.serialization.json.internal.decodeSerializableValuePolymorphic$kotlinx-serialization-runtime@kotlinx.serialization.json.JsonInput.(kotlinx.serialization.DeserializationStrategy<#GENERIC>)Generic + 2529
        at 25  SharedCode                          0x000000010a6543ef kfun:kotlinx.serialization.json.internal.StreamingJsonInput.decodeSerializableValue(kotlinx.serialization.DeserializationStrategy<#GENERIC>)Generic + 191
        at 26  SharedCode                          0x000000010a61fc47 kfun:kotlinx.serialization.ElementValueDecoder.decodeSerializableElement(kotlinx.serialization.SerialDescriptor;kotlin.Int;kotlinx.serialization.DeserializationStrategy<#GENERIC>)Generic + 263
        at 27  SharedCode                          0x000000010a62d5a0 kfun:kotlinx.serialization.internal.MapLikeSerializer.readElement(kotlinx.serialization.CompositeDecoder;kotlin.Int;#GENERIC_kotlin.collections.MutableMap<#GENERIC,#GENERIC>;kotlin.Boolean) + 2096
        at 28  SharedCode                          0x000000010a62efaa kfun:kotlinx.serialization.internal.AbstractCollectionSerializer.readElement$default(kotlinx.serialization.CompositeDecoder;kotlin.Int;#GENERIC;kotlin.Boolean;kotlin.Int) + 474

Describe the solution you'd like
Print out the class name in error message, like Field 'id' is required in Category, but it was missing

@etolstoy etolstoy changed the title Print out serializing class name in error message about missing field Print out class name in error message about missing field Jan 17, 2020
@qwwdfsad qwwdfsad assigned qwwdfsad and sandwwraith and unassigned qwwdfsad Jan 17, 2020
@qwwdfsad
Copy link
Collaborator

Makes sense to do it along with #662

shanshin added a commit to JetBrains/kotlin that referenced this issue Nov 24, 2020
shanshin added a commit to JetBrains/kotlin that referenced this issue Nov 24, 2020
shanshin added a commit to JetBrains/kotlin that referenced this issue Nov 25, 2020
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

4 participants