¿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

  • Repetir acciones en estado con RxJava
  • Usando RxJava para unir datos locales con datos remotos (o en caching)
  • Obtiene N últimos objects emitidos por observables en RxJava2
  • La biblioteca de Kotlin 'rxkotlin-0.21.0.jar' tiene un formatting no compatible. Actualice la biblioteca o el complemento
  • Múltiples requestes de modificación2 usando Flowable en Kotlin
  • Cómo notificar a Observable cuando finalice CountdownTimer
  • Confusión de la syntax de Kotlin lambda
  • Cómo pasar nulo a un Observable con tipo anulable en RxJava 2 y Kotlin
  • Comportamiento con Kotlin Higher-Order Functions e interfaces de método único?
  • ¿Cómo especificar la versión de RxJava al usar RxKotlin?
  • RxJava (Kotlin), Observable.amb y PublishSubject no están disparando