p.....5
p.....5
#programowanie #json #java #peonpyta

bardzo laicki problem here ( ͡° ͜ʖ ͡°) chcę zrobić prostą apkę z wykorzystaniem api z fixer.io i jako, że nigdy wcześniej się tym nie bawiłem, to teraz mam problem. (program robię w android studio, ale nie będę wrzucał całego kodu. tylko ten z jsonem)

http://pastebin.com/u7MJhS7N

jak z


zrobić tabelę floatową? albo chociaż jak wyciągnąć daną wartość (np. dla PLN)?
1
  • Najlepsze
  • Wszystkie komentarze
elloMadafaka
Ja to bym zmapował na klasę używając GSON'a a nie operując na stringach, jak ty.
Pamiętaj też, że w wątku głòwnym nie można wykonywać synchronicznych operacji łączenia sie z internetem.
2
javarzi
@peon125: również bym użył czegoś do mapowania, w zasadzie to bym użył tutaj Retrofita do zapytań i GSON. Jeśli będziesz operował na pieniądzach to lepiej użyć BigDecimal niż float, nie padniesz ofiarą zaokrągleń ;) No i mimo wszystko lepiej robić operacje sieciowe chociażby w AsyncTasku chyba, że wybierzesz retrofita to ten problem będziesz miał z głowy
1
another_throwaway23
@peon125: używanie zapytań do API w głównym wątku to jest ZŁY pomysł i żadne tłumaczenie go nie usprawiedliwi. zrób to przyzwoicie w osobnym wątku. nawet jeśli to jest prosta appka, żeby się czegokolwiek nauczyć. ucz się porządnie ;)

@javarzi: samo użycie retrofita magicznie nie przeniesie wywołań do osobnego wątku.

@peon125: odnośnie samego problemu. użyj Retrofit + GSON. stwórz model danych który przyjmuje Map.
nie ma sensu
1
w.....j
w.....j
@peon125: dałeś rade wyciągnć "rates" to dlaczego tak samo z "PLN" nie zrobisz?
0
p.....5
p.....5
@wczoraj: jestem głupi i nie wiem jak XD String s = jsonObject.get("rates").get("PLN").toString() nie działa.

@elloMadafaka: znalazłem w sieci sposób na nadanie sobie prawa do używania sieci w głównym wątku. trzeba dodać 2-3 linijki do kodu
0
sztacheta28
@peon125: Ja bym spróbował z:

String s = jsonObject.getJSONObject("rates").getDouble("PLN").toString();
Chociaż i tak polecam Retrofit + GSON.
0
g.....z
g.....z
@peon125: tak jak koledzy wyżej - rozdziel program na dane klasy, użyj oddzielnego wątku do parsowania (ja korzystałem z GSONa, ale to tak właściwie bez różnicy czego użyjesz) i zrób jakiś CLI program z tym np. podajesz w terminalu PLN/USD i ci wyswietla rate. Potem możesz dopisać testy jednostkowe, żebyś poznał JUnita i np, Mockito do mockowania klasy parsującej itd.
0