kaml icon indicating copy to clipboard operation
kaml copied to clipboard

Content-based polymorphism

Open Eisenwave opened this issue 5 months ago • 3 comments

Describe the problem you'd like to solve

I have a YAML configuration that contains values which can be strings or objects such as:

# monolingual value
key1: File
# multilingual value
key2:
  en_US: File
  de_DE: Datei

I couldn't find any way to deserialize this into something like MonolingualString or MultilingualString depending on the structure (more specifics at https://stackoverflow.com/q/78966200/5740428). I would have to specify the type in a !<type> or type: tag, and that's unnecessary.

Besides this use case, one could easily imagine providing RGB colors either as "#ff0000" hex code strings or { r: 255, g: 0, b: 0 } objects.

Describe the solution you'd like

Something similar to https://github.com/Kotlin/kotlinx.serialization/blob/master/docs/json.md#content-based-polymorphic-deserialization, i.e. content-based polymorphism.

Describe alternatives you've considered

No response

Additional context

No response

Eisenwave avatar Sep 10 '24 08:09 Eisenwave