I know kotlinx.serialization but my main goal was to have a very flexible serialisation mechanism that allows me to extract the most important information out of an object and reconstructing it from the most important information. For explanation see the README