Pobieranie zagnieżdżonych danych z tablicy JSON używając GSON-a

0

Witam ! Mam pytanie, co ja robię źle. Od kilku dni chce pobrać kurs waluty z JSON-a ( w JSON-ie jest zapisany jako "mid" ). Najpierw próbowałem samemu i udało się z niezagnieżdżonymi obiektami, a z zagneżdżonymi w tablicy jest problem. Znalazłem w internecie i zrobiłem tak jak tam pisało, ale dalej w logach pokazuje mi że mid jest null.

Mój JSON:

{
	"table": "A",
	"currency": "euro",
	"code": "EUR",
	"rates": [{
		"no": "154/A/NBP/2018",
		"effectiveDate": "2018-08-09",
		"mid": 4.2715
	}]
}

Tekst z Logcat-a:

09-01 12:06:39.331 16114-16114/bjd.adrian.nestedinarraygson V/MainActivity:: Code: EUR, Mid: null

Jak widać,** Code** pobiera bez problemu a z Mid jest problem.

MainActivity: https://pastebin.com/Wgsbs5zN
Post: https://pastebin.com/s35Hsasq
Rates: https://pastebin.com/xYMnAMy2

Bardzo proszę o pomoc, ponieważ już nie wiem co mam robić

0

Spróbuj zadeklarować mid jako Float. Więcej nie powiem, bo nie znam Volley, zawsze używam Retrofita.

1

Bo nie wyciągasz rates z post, tylko tworzysz nowe rates z domyślnymi wartościami czyli nullami.

Gson gson = new Gson();
Post post = gson.fromJson(response, Post.class);
String code = post.getCode();
Rates rates = new Rates();
Double mid = rates.getMid();
0

A jak to wyciągnąć? post.getRates? A później pobrać odpowiedni indeks z listy ?

1

No po to jest post.getRates(), zagnieżdżona lista tak samo jak było w jsonie.

0

Dodałem do kodu to:


                List list = post.getRates();

                Double m = (Double) list.get(2);

ale kiedy sprawdzam rozmiar listy .size() pokazuje mi że rozmiar jest równy 1, a chyba powinno być 3 ponieważ w klasie Rates są 3 pola na dane z JSON-a.

0

Pocztaj czym są listy (albo bardziej ogólnie kolekcje), bo jak widać nie wiesz.

0

Jest dobrze, masz listę z jednym obiektem klasy Rates (tak btw, powinno być Rate). W jsonie tablica też ma tylko jeden element

0

Ja tylko potrzebuje pobrać ten Mid z klasy** Rates**. Jak to zrobić ? Według mnie lista powinna mieć 3 elementy: 1. no, 2.effectiveDate, 3. mid

0

Nie, powinno być tak jak jest

0

To jak pobrać tego mid-a do zmiennej ? Potrzebuje tylko jego.

0

post.getRates().get(0).getMid()

0

Dzięki za pomoc !

1 użytkowników online, w tym zalogowanych: 0, gości: 1