Я читаю массив Json из стороннего API и отображаю его напрямую в массив POJO с помощью Gson. Часто я получаю недостающие данные для некоторых объектов, и все отсутствующие параметры имеют значение "N/A"
.
Мой класс POJO, смешанный из переменных String
и Double
, теперь, когда возвращается "N/A"
, где Ожидается значение Double
, сбой приложения. Определенно, я могу l oop через них вручную и пропустить объекты с отсутствующими данными, но я ищу альтернативное решение, которое помогло бы мне сделать то же самое при отображении с использованием Gson.
POJO класс (синтаксис Kotlin )
class StockData(
var symbol: String?,
var name: String?,
var currency: String?,
var price: Double,
@SerializedName("day_change")
var dayChange: Double,
@SerializedName("change_pct")
var changePct: Double,
var price90DayHigh: Double,
var price90DayLow: Double
)
Отображение
val stockDataList = Gson().fromJson(response.body()!!.asJsonObject.get("data"),
Array<StockData>::class.java).toList()
Json с доступными данными
{
"symbol": "AAK.ST",
"name": "AAK AB (publ)",
"currency": "SEK",
"price": "189.15",
"price_open": "190.90",
"day_high": "190.95",
"day_low": "188.30",
"52_week_high": "203.80",
"52_week_low": "131.62",
"day_change": "-1.35",
"change_pct": "-0.71",
"close_yesterday": "190.50",
"market_cap": "47993210000",
"volume": "110641",
"volume_avg": "476416",
"shares": "253730934",
"stock_exchange_long": "Stockholm Stock Exchange",
"stock_exchange_short": "OMX",
"timezone": "CET",
"timezone_name": "Europe/Stockholm",
"gmt_offset": "3600",
"last_trade_time": "2020-02-21 17:29:54",
"pe": "32.60",
"eps": "5.32"
}
Json с отсутствующими данными
{
"symbol": "HEMF-PREF.ST",
"name": "N/A",
"currency": "N/A",
"price": "0.00",
"price_open": "N/A",
"day_high": "N/A",
"day_low": "N/A",
"52_week_high": "N/A",
"52_week_low": "N/A",
"day_change": "N/A",
"change_pct": "N/A",
"close_yesterday": "N/A",
"market_cap": "N/A",
"volume": "N/A",
"volume_avg": "N/A",
"shares": "N/A",
"stock_exchange_long": "Stockholm Stock Exchange",
"stock_exchange_short": "OMX",
"timezone": "CET",
"timezone_name": "Europe/Stockholm",
"gmt_offset": "3600",
"last_trade_time": "N/A",
"pe": "N/A",
"eps": "N/A"
}