MainActivity.kt
package com.example.leerjson
import android.os.Bundle
import androidx.activity.ComponentActivity
import androidx.activity.compose.setContent
import androidx.compose.foundation.layout.Column
import androidx.compose.foundation.layout.padding
import androidx.compose.material3.MaterialTheme
import androidx.compose.material3.Surface
import androidx.compose.material3.Text
import androidx.compose.runtime.Composable
import androidx.compose.ui.Modifier
import androidx.compose.ui.tooling.preview.Preview
import androidx.compose.ui.unit.dp
import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.runBlocking
import kotlinx.coroutines.withContext
import org.json.JSONArray
import java.io.BufferedReader
import java.io.InputStreamReader
import java.net.HttpURLConnection
import java.net.URL
class MainActivity : ComponentActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContent {
Surface(
modifier = Modifier.padding(16.dp),
) {
val routines = runBlocking {
withContext(Dispatchers.IO) {
val url = "https://www.jesusninoc.com/rutinasp.json"
val json = getJsonFromUrl(url)
parseJson(json)
}
}
DisplayRoutines(routines)
}
}
}
@Composable
fun DisplayRoutines(routines: List<String>) {
Column {
Text(text = "Routines:")
routines.forEach { routine ->
Text(text = routine)
}
}
}
suspend fun getJsonFromUrl(urlString: String): String {
val url = URL(urlString)
val connection = url.openConnection() as HttpURLConnection
val bufferedReader = BufferedReader(InputStreamReader(connection.inputStream))
val response = StringBuilder()
var line: String?
while (bufferedReader.readLine().also { line = it } != null) {
response.append(line)
}
return response.toString()
}
suspend fun parseJson(jsonString: String): List<String> {
val jsonArray = JSONArray(jsonString)
val routines = mutableListOf<String>()
for (i in 0 until jsonArray.length()) {
val jsonObject = jsonArray.getJSONObject(i)
val dia = jsonObject.getString("dia")
val tipo = jsonObject.getString("tipo")
val rutina = jsonObject.getString("rutina")
routines.add("Día: $dia, Tipo: $tipo, Rutina: $rutina")
}
return routines
}
}
Publicado el día 3 de diciembre de 2023 CATEGORÍAS Android , Kotlin