Cómo analizar JSON manualmente en Kotlin?

Quiero analizar la respuesta JSON manualmente en Kotlin. Como recibo una respuesta JSON compleja que tiene algunos campos comunes. Por ejemplo, estoy obteniendo una respuesta inferior.

{ status: "success/false" apiId: 6 message: "Error msg if any" . . . // Here comes some JSON with complex structure where some fields are . // missing/omitted. Sometime array is missing/response in array is . // getting changed, getting lot of unwanted stuff Or whatever you can . // think. And because of this I need to parse it manually. . } 

Ahora, ¿cómo puedo analizar este tipo de respuesta manualmente en data class de data de Kotlin? Una cosa más que me gustaría saber, ¿puedo usar cualquier class base para campos comunes en la respuesta?