¿Cómo leer JSON desde Url usando kotlin Android?

Estoy usando kotlin para desarrollar la aplicación. Ahora quiero get datos JSON del server.

En Java, implementé Asyntask y Rxjava para leer JSON de Url. También busco en google pero no puedo get los detalles adecuados para mi requerimiento.

¿Cómo puedo leer JSON desde Url usando kotlin?

Prueba esto

fun parse(json: String): JSONObject? { var jsonObject: JSONObject? = null try { jsonObject = JSONObject(json) } catch (e: JSONException) { e.printStackTrace() } return jsonObject } 

Puede usar la biblioteca Volley o Retrofit en Kotlin. En realidad, puede usar todas las bibliotecas de Java en Kotlin.

El voleo es más fácil pero se adapta más rápido que el volante. Tu elección.

Enlace de Volley

Retrofit Link

Finalmente recibo respuesta de Aquí

Lea los datos de Json utilizando las extensiones de Android Retrofit 2.0 RxJava, RxAndroid, Kotlin.

  fun provideRetrofit(): Retrofit { return Retrofit.Builder() .baseUrl("https://www.example.com") .addConverterFactory(MoshiConverterFactory.create()) .build() } 

Módulo

 interface Api { @GET("/top.json") fun getTop(@Query("after") after: String, @Query("limit") limit: String): Call<NewsResponse>; } 

Supongo que estás tratando de leer la respuesta de una API de server, que esperas que sea una cadena con JSON. Para hacerlo, puedes usar:

 val apiResponse = URL("yourUrl").readText() 

De los documentos :

Lee el contenido completo de esta URL como una cadena usando UTF-8 o el juego de caracteres especificado.

Este método no se recomienda en files grandes.

Tenga en count que, si usa esto dentro de una actividad de Android, la aplicación se bloquea porque está bloqueando el hilo principal con una llamada asincrónica. Para evitar que la aplicación se bloquee, te recomiendo que uses Anko . Más precisamente, solo tiene que agregar la dependencia de los comunes, no toda la biblioteca.

Puedes encontrar más información en esta publicación de blog

  • No se puede 'observar en' hilo principal con RxKotlin
  • RxJava - ¿Entradas de keyboard de contrapresión?
  • No se puede cambiar el text de ActionMenuItemView con RxKotlin
  • Rx-Kotlin awaitTerminalEvent nunca se sube a Completo
  • Para una function de Kotlin utilizada como expresión, ¿hay una forma concisa de operar y devolver un valor?
  • Spring 5 and Kotlin 1.1 Coroutines: Type rx.Scheduler no presente
  • Kotlin con stack RxKotlinFX da un error de class de acceso
  • RxJava2 Tal vez devuelva Observable vacío si no hay elemento
  • Repetir acciones en estado con RxJava
  • RxKotlin collectInto () MutableList usando references de método
  • Usando RxJava para unir datos locales con datos remotos (o en caching)