2013-05-16 2 views
6

Ok, mi chiedo se questo potrebbe essere abbastanza semplice e stupido, ma dopo un po 'di tempo a litigare con la situazione non ho idea di cosa stia succedendo.Gson, JsonElement, confronto delle stringhe in Java

Sto utilizzando Gson per gestire alcuni elementi JSON. Da qualche parte nel mio codice ottengo uno dei JsonElements di un JsonObject come String e lo confronto con un'altra String. Per quanto posso vedere, entrambi sono uguali ma, quando si confrontano, ottengo sempre falsi. Ecco il frammento.

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)) { 
     ... 

Non va mai dentro l'istruzione if.

arr ha elemento nell'indice 0, jsonobj ha un campo con il nome "coolname" e se println model_elem ottengo "bla bla bla" (lo stesso di STUPID_STRING). Ho provato equals() e anche compareTo() == 0.

Non riesco a capire cosa sta succedendo qui, qualcuno lo sa? :-S.

Grazie in anticipo.

risposta

13

Credo che sia necessario utilizzare getAsString() con GSON. toString() aggiungerà virgolette!

+0

OMG GUYS !! Ho scoperto il problema !. – Ole

+0

ci sono stato anche io. fissando due stringhe uguali, non si notano le virgolette aggiuntive. :) –

+0

hai perfettamente ragione, questo era il problema ... Non so come dire ... che dovrebbe essere documentato in JsonElement.toString() e JsonElement.getAsString() xDD – Ole