如何从url中获取kotlin中的数组json
在Android工作室“ kotlin
”新,我试图从url
数据json
,内容JSONObject
和JSONArray
,我的代码与JSONObject
工作正常,但我仍然有JSONArray
问题。
这是我的任何一个代码可以帮助我如何从我的网址获取JSONArray
fun buclick(view:View){ val flightSearch=editText2.text.toString() val url="xxxxxxx-flight=$flightSearch" MyAsyncTask().execute(url) } inner class MyAsyncTask:AsyncTask<String,String,String>(){ override fun onPreExecute() { super.onPreExecute() } override fun doInBackground(vararg p0: String?): String { //تمرير بيانات هنا try { val url=URL(p0[0]) val urlConnect = url.openConnection() as HttpURLConnection urlConnect.connectTimeout=500 val dataJsonAsString=convertStreanToString(urlConnect.inputStream) publishProgress(dataJsonAsString) }catch (ex:Exception){ } return "" } override fun onProgressUpdate(vararg values:String?) { val json=JSONObject(values[0]) val query= json.getJSONObject("identification") val sunrise=query.getString("id") flighttext.text="sunrise time" + sunrise } override fun onPostExecute(result: String?) { super.onPostExecute(result) } fun convertStreanToString(inputStream:InputStream):String{ val bufferReader = BufferedReader(InputStreamReader(inputStream)) var line:String var allstring:String="" try { do { line=bufferReader.readLine() if(line!=null) allstring+=line }while (line!=null) bufferReader.close() }catch (ex:Exception){} return allstring } } //مالنا شغل ببيها override fun onBackPressed() { if (drawer_layout.isDrawerOpen(GravityCompat.START)) { drawer_layout.closeDrawer(GravityCompat.START) } else { super.onBackPressed() } }
我的数据json网址
这里是如何从这个响应获取可用性数组。
{“id”:“f7c2de9”,“row”:4606622416,“number”:{“default”:“QR402”,“alternative”:null},“callsign”:“QTR402”},可用性“:[”AGE“,”MSN“]}
val json=JSONObject(values[0]) val availabilityArray = json.getJSONArray("availability")
你的代码应该是这样的
fun buclick(view:View){ val flightSearch=editText2.text.toString() val url="xxxxxxx-flight=$flightSearch" MyAsyncTask().execute(url) } inner class MyAsyncTask:AsyncTask<String,String,String>(){ override fun onPreExecute() { super.onPreExecute() } override fun doInBackground(vararg p0: String?): String { //تمرير بيانات هنا try { val url=URL(p0[0]) val urlConnect = url.openConnection() as HttpURLConnection urlConnect.connectTimeout=500 val dataJsonAsString=convertStreanToString(urlConnect.inputStream) publishProgress(dataJsonAsString) val json=JSONObject(dataJsonAsString); ///here is the required array val availabilityArray = json.getJSONArray("availability") val query= json.getJSONObject("identification") val sunrise=query.getString("id") flighttext.text="sunrise time" + sunrise }catch (ex:Exception){ } return "" } override fun onProgressUpdate(vararg values:String?) { //update progressbar } override fun onPostExecute(result: String?) { super.onPostExecute(result) } fun convertStreanToString(inputStream:InputStream):String{ val bufferReader = BufferedReader(InputStreamReader(inputStream)) var line:String var allstring:String="" try { do { line=bufferReader.readLine() if(line!=null) allstring+=line }while (line!=null) bufferReader.close() }catch (ex:Exception){} return allstring } } //مالنا شغل ببيها override fun onBackPressed() { if (drawer_layout.isDrawerOpen(GravityCompat.START)) { drawer_layout.closeDrawer(GravityCompat.START) } else { super.onBackPressed() } }
尝试下面的代码
val availabilityArray = json.getJSONArray("availability") for (i in 0 until availabilityArray.length()){ val winspeed = availabilityArray.getString(i); text.setText(winspeed) }