MainActivity.kt
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 |
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 } } |
