2013-05-16 22 views
6

OK, zastanawiam się, czy to może być dość proste i głupie, ale po chwili walki z sytuacją nie mam pojęcia, co się dzieje.Gson, JsonElement, Porównanie ciągów w Javie

Używam Gsona do obsługi kilku elementów JSON. Gdzieś w moim kodzie otrzymuję jeden z JsonElements z JsonObject jako String i porównuję go z innym Stringiem. O ile widzę, oba są równe, ale przy porównywaniu zawsze otrzymuję fałszywe. Oto fragment.

JsonArray arr; 
    JsonObject jsonobj; 
    JsonElement model_elem; 
    String STUPID_STRING = "bla bla bla"; 

    // Previously we initializes and fill arr, it doesn't matter how... I hope 
    jsonobj = arr.get(0).getAsJsonObject(); 
    model_elem = jsonobj.get("coolname"); 
    if (model_elem.toString().equals(STUPID_STRING)) { 
     ... 

Nigdy nie przechodzi do instrukcji if.

arr ma element na indeksie 0, jsonobj ma pole o nazwie "coolname" i jeśli println model_elem otrzymam "bla bla bla" (taki sam jak STUPID_STRING). Próbowałem equals(), a także compareTo() == 0.

Nie mogę dowiedzieć się, co się tutaj dzieje, czy ktoś wie? : -s.

Z góry dziękuję.

Odpowiedz

13

Uważam, że musisz użyć z GSON. toString() doda cytaty!

+0

OMG GUYS !! Odkryłem problem !. – Ole

+0

też tam byłem. patrząc na dwa równe łańcuchy, nie zauważysz dodatkowych cytatów. :) –

+0

masz całkowitą rację, to był problem ... Nie wiem jak to powiedzieć ... to powinno być udokumentowane w JsonElement.toString() i JsonElement.getAsString() xDD – Ole