[Java, Android] .getString() error die ik krijg via een api

Pagina: 1
Acties:

Vraag


Acties:
  • 0 Henk 'm!

  • IM_YOUR_MAMA
  • Registratie: Oktober 2017
  • Laatst online: 25-09-2021
Mijn vraag
Hoi,
Ik heb een probleem die ik niet kan oplossen, Ik haal via een okhttp call data op.
Deze data wordt dan in een json geplaats en van die json wil ik de data van de string
"name"
krijgen.
Maar daarmee krijg ik een error
can't resolve .getString()
Relevante software en hardware die ik gebruik
http://square.github.io/okhttp/
http://docs.royaleapi.com/

Wat ik al gevonden of geprobeerd heb
final
voor mijn string weg gehaald, Dan werkt het deels; De error is weg maar dan krijg ik te zien dat ik final weer terug moet zetten voor mijn string |:(

code (deels, Als je meer nodig hebt zeg het maar):
@Override
public void onResponse(Call call, Response response) throws IOException {
final String json = response.body().string();
samir_activity.this.runOnUiThread(new Runnable() {
@Override
public void run() {
String aJsonString = json.getString("Name");
}
});
}

[ Voor 0% gewijzigd door IM_YOUR_MAMA op 23-04-2018 21:06 . Reden: typo ]

Beste antwoord (via IM_YOUR_MAMA op 24-04-2018 19:38)


  • diabolofan
  • Registratie: Mei 2009
  • Laatst online: 06-10 14:10
De variabele json is een string. Daarna wil je op deze variabele json, doormiddel van een getString call, een property uit je json opvragen. Waarom dit niet kan is omdat de variabele json een string is (waarop geen getString call bestaat), en geen JSON object (waar in de meeste libraries vaak wel iets van een getProperty / getString methode bestaat)

Je zal dus eerst van de response.body().string() een JSON object moeten maken, waarna je een property uit het JSON object kan krijgen. Een library die dit voor je kan doen is bijvoorbeeld GSON: https://github.com/google/gson. Voorbeelden van hoe dit te gebruiken vind je hier: https://github.com/google/gson/blob/master/UserGuide.md

[ Voor 10% gewijzigd door diabolofan op 24-04-2018 08:44 ]

Alle reacties


Acties:
  • +1 Henk 'm!

  • MichielPH
  • Registratie: Februari 2005
  • Laatst online: 14-07-2024
JSON is hoofdlettergevoelig. Je zegt "name" te willen weten, maar je vraagt "Name" op.

Overigens een paar tips:
Probeer zo min mogelijk in runOnUiThread() te doen, enkel het daadwerkelijk sturen van je verwerkte data naar je view. String aJsonString = json.getString("Name"); is onderdeel van het verwerken en hoeft niet op de UI thread.

Het keyword final geeft enkel aan dat de variabele niet meer kan veranderen, waardoor je in runOnUiThread() kan garanderen dat dit altijd waar is: json = response.body().string()

Acties:
  • Beste antwoord
  • +3 Henk 'm!

  • diabolofan
  • Registratie: Mei 2009
  • Laatst online: 06-10 14:10
De variabele json is een string. Daarna wil je op deze variabele json, doormiddel van een getString call, een property uit je json opvragen. Waarom dit niet kan is omdat de variabele json een string is (waarop geen getString call bestaat), en geen JSON object (waar in de meeste libraries vaak wel iets van een getProperty / getString methode bestaat)

Je zal dus eerst van de response.body().string() een JSON object moeten maken, waarna je een property uit het JSON object kan krijgen. Een library die dit voor je kan doen is bijvoorbeeld GSON: https://github.com/google/gson. Voorbeelden van hoe dit te gebruiken vind je hier: https://github.com/google/gson/blob/master/UserGuide.md

[ Voor 10% gewijzigd door diabolofan op 24-04-2018 08:44 ]