#android #json #kotlin
#Android #json #kotlin
Вопрос:
Я не могу использовать объект Json и volley, пожалуйста, помогите мне, мой английский очень плохой извините, я не смог решить ошибку, которую мой учитель не мог понять в курсе, который я прошел, потому что я новичок, эмулятор выключается и выдает эту ошибку во время работы, она взрывается, когда я пытаюсь получить доступ данные в apin, я не мог понять проблему.
val url ="https://api.openweathermap.org/data/2.5/find?q=Ankaraamp;appid=7ac4858bc53d5c6623bb4edd84b4b850amp;lang=tramp;units=metric"
val havadurumuObjeRequest= JsonObjectRequest(Request.Method.GET,url,null,object :Response.Listener<JSONObject>{
override fun onResponse(response: JSONObject?) {
var main = response?.getJSONObject("main")
var sicaklik =main?.getInt("temp")
tvSicaklik.text=sicaklik.toString()
var sehiradi=response?.getString("name")
tvSehir.text=sehiradi
var weather=response?.getJSONArray("weather")
var aciklama=weather?.getJSONObject(0)?.getString("description")
tvAciklama.text=aciklama
var icon=weather?.getJSONObject(0)?.getString("icon")
var resimDosyaadi=resources.getIdentifier("icon_" icon?.sonKarakterisil(),"drawable",packageName)
imgHavaDurumu.setImageResource(resimDosyaadi)
}
},object :Response.ErrorListener{
override fun onErrorResponse(error: VolleyError?) {
}
})
MySingleton.getInstance(this)?.addToRequestQueue(havadurumuObjeRequest)
}
**
Ответ №1:
пожалуйста, проверьте свой api, потому что ответ от https://api.openweathermap.org/data/2.5/find ?q= Анкара amp; appid = 7ac4858bc53d5c6623bb4edd84b4b850 amp;lang = tr amp; единицы измерения = метрика
{
"message": "accurate",
"cod": "200",
"count": 2,
"list": [
{
"id": 323786,
"name": "Ankara",
"coord": {
"lat": 39.9199,
"lon": 32.8543
},
"main": {
"temp": 8.09,
"feels_like": 4.97,
"temp_min": 7,
"temp_max": 9,
"pressure": 1010,
"humidity": 76
},
"dt": 1607911747,
"wind": {
"speed": 2.6,
"deg": 70
},
"sys": {
"country": "TR"
},
"rain": null,
"snow": null,
"clouds": {
"all": 75
},
"weather": [
{
"id": 803,
"main": "Clouds",
"description": "parçalı bulutlu",
"icon": "04n"
}
]
},
{
"id": 323784,
"name": "Ankara",
"coord": {
"lat": 39.9167,
"lon": 32.8333
},
"main": {
"temp": 8.11,
"feels_like": 5,
"temp_min": 7,
"temp_max": 9,
"pressure": 1010,
"humidity": 76
},
"dt": 1607911508,
"wind": {
"speed": 2.6,
"deg": 70
},
"sys": {
"country": "TR"
},
"rain": null,
"snow": null,
"clouds": {
"all": 75
},
"weather": [
{
"id": 803,
"main": "Clouds",
"description": "parçalı bulutlu",
"icon": "04n"
}
]
}
]
}
итак, у нас есть list
как JSONArray, так что, чтобы получить main
, temp
… значение, необходимо проанализировать
// We get list info (This is an array)
val jArr = jObj.getJSONArray("list");
// I just use only first value, if you want use all, use loop instead
val JSONdata = jArr.getJSONObject(0);
// then use as your code
var main = JSONdata?.getJSONObject("main")
var sicaklik = main?.getInt("temp")
tvSicaklik.text = sicaklik.toString()
var sehiradi = JSONdata?.getString("name")
tvSehir.text = sehiradi
var weather = JSONdata?.getJSONArray("weather")
var aciklama = weather?.getJSONObject(0)?.getString("description")
tvAciklama.text = aciklama
var icon = weather?.getJSONObject(0)?.getString("icon")
var resimDosyaadi = resources.getIdentifier("icon_" icon?.sonKarakterisil(),"drawable",packageName)
imgHavaDurumu.setImageResource(resimDosyaadi)