Я пытаюсь получить «изображение» JSONObject, которое иногда является нулевым значением, поэтому я установил try {} catch {}
для моего val jsonMedia
, чтобы сделать его обнуляемым, но я не уверен, что что-то упустил, потому что это не похоже на работу.
Всякий раз, когда я закомментирую jsonMedia
, моя выборка работает нормально, поэтому я сосредоточусь на том, чтобы просто поделиться выборкой "изображения", чтобы данные, которыми я делюсь, не запутались.
первый. Я покажу, как «изображение» находится в базе данных и что я подразумеваю под «иногда», имеет нулевое значение - ноль:
{
"listCar": [
{
//other data
"image": null,
//other data
}
]
}
- , когда оно содержит изображение:
{
"listCar": [
{
//other data
"image": {
"path": "Upload/UploadCarMain/UploadCarMain-200-200/30032235992008220498istanbul_adalarCar195.jpg",
"name": "30032235992008220498istanbul_adalarCar195.jpg"
},
//other data
}
]
}
Теперь за моими данными выборки последовал курс, за которым я наблюдаю, единственное отличие состоит в том, что значения «image» в базе данных, которую я использую, не похожи на курс, который не содержит нулевых значений в их image path
Теперь вот мой "Автомобиль" class
, который должен получить изображение:
class Car(other data, val image: String?, other data) {
override fun toString(): String {
return "Car(//other data, image='$image', //other data')"
}
}
, а вот мой код извлечения, где я пытаюсь try {} catch(){}
мой "jsonMedia" image JSONOBject:
override fun doInBackground(vararg params: String?): ArrayList<Car> {
Log.d(TAG, "doInBackground starts")
val carList = ArrayList<Car>()
try {
val jsonData = JSONObject(params[0])
val itemsArray = jsonData.getJSONArray("listCar")
for (i in 0 until itemsArray.length()) {
val jsonCar = itemsArray.getJSONObject(i)
//other fetch data
val jsonMedia: JSONObject? = try {jsonCar.getJSONObject("image")} catch (e: IllegalArgumentException) {null}
val photoURL = jsonMedia?.getString("path")
val carObject = Car(other data, photoURL)
carList.add(carObject)
Log.d(TAG, ".doInBackground $carObject")
}
} catch (e: JSONException) {
e.printStackTrace()
Log.e(TAG, "doInBackground: Error processing json data. ${e.message}")
cancel(true)
listener.onError(e)
}
Log.d(TAG, ".doInBackground ends")
return carList
}
override fun onPostExecute(result: ArrayList<Car>) {
Log.d(TAG, "onPostExecute starts")
super.onPostExecute(result)
listener.onDataAvailable(result)
Log.d(TAG, ".onPostExecute ends")
}
}
и вот ошибка, которую я получаю, когда запускаю код:
2020-02-14 16:42:16.483 26642-26684/com.example.wasit E/GetFlickrJsonData: doInBackground: Error processing json data. Value null at image of type org.json.JSONObject$1 cannot be converted to JSONObject