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

Odpowiedz Nowy wątek
2018-09-01 12:19
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ć

edytowany 1x, ostatnio: Adrian098741, 2018-09-01 12:20

Pozostało 580 znaków

2018-09-02 22:28
0

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

edytowany 1x, ostatnio: kulson, 2018-09-02 22:31

Pozostało 580 znaków

2018-09-02 22:38
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();
A jak to wyciągnąć ? post.getRates ? - Adrian098741 2018-09-02 23:09
I wtedy pobrać odpowiedni indeks z listy ? - Adrian098741 2018-09-02 23:09
Nie prowadź głównego wątku w komentarzach. - Michał Sikora 2018-09-02 23:14

Pozostało 580 znaków

2018-09-03 07:19
0

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

Pozostało 580 znaków

2018-09-03 07:54
1

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

Pozostało 580 znaków

2018-09-03 19:10
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.

Pozostało 580 znaków

2018-09-03 19:30
0

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

Pozostało 580 znaków

2018-09-03 19:31
0

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

edytowany 1x, ostatnio: kulson, 2018-09-03 19:32

Pozostało 580 znaków

2018-09-03 19:51
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

Pozostało 580 znaków

2018-09-03 20:03
0

Nie, powinno być tak jak jest

Pozostało 580 znaków

2018-09-03 20:05
0

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

Pozostało 580 znaków

Odpowiedz
Liczba odpowiedzi na stronę

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