Вытащить поле из 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
}