Вытащить поле из JSON без создания POJO

Имеется JSON строка:

{
  "requestData": {
    "name": "Olesya",
    "mark": "31231",
    "color": "312312312312",
    "number": "A312DA"
  },
  "requestCode": "200"
}

Нужно вытащить то, что лежит внутри requestData. Имеется POJO:

data class DriverFoundInfo(
    val name: String,
    val mark: String,
    val color: String,
    val number: String
)

Вопрос: можно ли без создания ещё одного POJO, который включает в себя поля requestData: DriverFoundInfo и requestCode: Int вытащить из приведённой строки requestData, чтобы она сконвертировалась в DriverFoundInfo?


Ответы (1 шт):

Автор решения: Александр Оспенников

Может поможет. Суть функции - берёт JSON как строку, получает имя нужного поля и вытаскивает значение этого поля. Я писал ее для вытаскивания токенов из ответа и не подразумевалось что они будут представлены объектами. Но, думаю, сложности учесть возможность объектов труда не составит.

private fun takeToken(json: String, await_token: String): String {
        var token = json.replace("\"", "")
        token = token.replace(":", "")
        token = token.replace(await_token, "IT_IS_HERE!!!")

        token = token.substringAfter("IT_IS_HERE!!!")

        token = if(token.contains(",")) token.substringBefore(",") else token.substringBefore("}")
        if (token == "") return "ERROR!!!"
        return token
    }
→ Ссылка