¿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

  • ¿Cómo escalar dinámicamente el rebote de la stream de emisión de ráfagas?
  • Usando RxJava para unir datos locales con datos remotos (o en caching)
  • Cómo pasar nulo a un Observable con tipo anulable en RxJava 2 y Kotlin
  • Múltiples requestes de modificación2 usando Flowable en Kotlin
  • Agregar subscribeOn () está cambiando el tipo de retorno de observable
  • RxJava2 Tal vez devuelva Observable vacío si no hay elemento
  • Inyectar constructor y object complementario
  • ¿Cómo hacer un grupo? ¿Por qué coleccionar usando RxJava y Kotlin?
  • Excepción causada por: java.lang.ClassNotFoundException: org.reactivestreams.Publisher
  • Repetir acciones en estado con RxJava
  • Llamada asincrónica para cada elemento dentro de una colección