#android #kotlin
Вопрос:
У меня есть этот объект json
{
"107": "First",
"125": "Second",
"130": "Third",
"141": "Fourth"
}
Я хочу преобразовать его в массив таких объектов, как этот
[
{
"107":"First"
},
{
"125":"Second"
},
{
"130":"Third"
},
{
"141":"Fourth"
}
]
Чтобы было легко извлекать каждый объект в виде массива.
Как я могу сделать это с помощью kotlin?
Ответ №1:
Вы можете сделать это следующим образом, прочитайте встроенные комментарии, чтобы понять:
//your starting JSON string
val startingJson = "{n"
""107": "First",n"
""125": "Second",n"
""130": "Third",n"
""141": "Fourth"n"
"}"
//your starting JSON object
val startingJsonObj = JSONObject(startingJson)
//initialize the array
val resultJsonArray = JSONArray()
//loop through all the startingJsonObj keys to get the value
for (key in startingJsonObj.keys()) {
val resultObj = JSONObject()
val value = startingJsonObj.opt(key)
//put values in individual json object
resultObj.put(key, value)
//put json object into the final array
resultJsonArray.put(resultObj)
}
Log.d("resultJsonArray", resultJsonArray.toString())
Комментарии:
1. Спасибо @Mayur, это работает, но как я могу преобразовать свой объект в startingJson как ваш?
2. @IslamAhmed Если у вас уже есть json
object
, то вам не нужно его конвертироватьString
. Просто начните сinitialize the array
шага и заменитеstartingJsonObj
его своим объектом JSON.3. Я сделал это, потому что я просто скопировал его из вашего вопроса в виде строки.
Ответ №2:
Это может помочь вам с помощью Gson():
data class MyData {
var number: String,
var name: String
}
//You can use jsonValue as String too
fun convertJsonToArray(jsonValue: JsonObject) {
val myDataArray = Gson().fromJson(jsonValue, Array<MyData>::class.java)
//if you need it as list
myDataArray.toList()
}