2017-07-03 8 views
0

アプリケーションを開発するためにkotlinを使用しています。今、私はサーバーからJSONデータを取得したいと思います。kotlin Androidを使用してURLからJSONを読み取る方法は?

では、UMLからJSONを読み込むためにAsynaskとRxjavaを実装しました。またGoogleで検索していますが、私の要求には適切な詳細が得られません。

kotlinを使用してURLからJSONを読み取るにはどうすればよいですか?

答えて

2

はあなたがボレーを使用するか、Kotlin内のすべてのJavaライブラリを使用することができますKotlin.Actuallyでライブラリをレトロフィットすることができ、この

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

私は、サーバーURLからjsonデータを読み込む必要があります。 – sasikumar

+0

既存のAndroidライブラリはKotlinと互換性があります。データを取り込めるように改装したり選択したりすることができます。 –

1

を試してみてください。

Volleyよりも簡単ですが、Volleyよりも速くRetrofitしてください。あなたの選択。

Volley Link

Retrofit Link

1

最後にレトロフィット2.0 RxJava、 RxAndroid、 Kotlin Androidの拡張機能を使用してHere

読むJSONデータからの回答を得ています。

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

モジュール

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

私はあなたがJSONの文字列であることを期待サーバーAPIからの応答を読み取ろうとしていると思います。そのためには、使用することができます。

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

docsから:

UTF-8または指定された文字セットを使用して文字列として、このURLの全体の内容を読み込みます。

この方法は、巨大なファイルにはお勧めできません。

Androidのアクティビティ内でこれを使用している場合、非同期呼び出しでメインスレッドをブロックしているため、アプリケーションがクラッシュすることに注意してください。アプリがクラッシュするのを避けるため、Ankoを使用することをおすすめします。より正確には、ライブラリ全体ではなく、add the commons dependencyです。

あなたはより多くの情報in this blog post

+0

誤解を招く恐れがあります。質問にも答えません。 –

+1

@ Paul-Sebastian質問に答えるだけでなく、Javaライブラリを使用せずにそれを行う方法に答える唯一の方法です。どのように誤解を招くのですか? –

+0

申し訳ありませんが、私は前回私はあなたの答えを試みたと思うが、それは動作しませんでしたが、私はなぜ正確に覚えていない。ただ私を無視する。ごめんなさい。 –

0

READTEXTを(見つけることができますが)、彼はしかし、(dgrcodeさんanswerごとにブログ記事にもして)彼の本のAndroid開発者のためのKotlinでネットワークを導入したときにアントニオ・レイヴァが使用するアプローチであるI応答が非常に大きくなる可能性があるので、readText()がURLからのJSON応答を要求する正しいアプローチであるかどうかは分かりません。(Antonioの言葉でも、KotlinのドキュメントではreadTextにサイズ制限があると言います。 this discussionによると、readTextの代わりにストリームを使用する必要があります。私は、ライブラリの依存関係を追加せずに、このアプローチや、Kotlinで最も簡潔で最適なものを使って、この回答への回答を見たいと思います。

this thread

も注意READTEXT()は適切な選択でないときアントニオ状況のためにそのブログ記事での提供の選択肢を行うことも参照してください。私は誰かがそれが適切かどうかを明確にしてくれるのを見たいと思っています。

関連する問題