2015-12-06 8 views

risposta

15

Supponendo che ci si riferisce a JsonElement:

getAsString()

metodo comodo per ottenere questo elemento come valore stringa.

Questo metodo accede e restituisce una proprietà dell'elemento, ovvero il valore dell'elemento come oggetto java String.

toString()

Restituisce una rappresentazione stringa di questo elemento.

Questo metodo è il metodo "standard" java toString, cioè restituisce una rappresentazione leggibile dell'elemento stesso.

Per una migliore comprensione, lasciate che vi dia un esempio:

import com.google.gson.JsonElement; 
import com.google.gson.JsonObject; 
import com.google.gson.JsonPrimitive; 

public class GsonTest { 

    public static void main(String[] args) { 
     JsonElement jsonElement = new JsonPrimitive("foo"); 

     System.out.println(jsonElement.toString()); 
     System.out.println(jsonElement.getAsString()); 

     jsonElement = new JsonPrimitive(42); 

     System.out.println(jsonElement.toString()); 
     System.out.println(jsonElement.getAsString()); 

     jsonElement = new JsonPrimitive(true); 

     System.out.println(jsonElement.toString()); 
     System.out.println(jsonElement.getAsString()); 

     jsonElement = new JsonObject(); 
     ((JsonObject) jsonElement).addProperty("foo", "bar"); 
     ((JsonObject) jsonElement).addProperty("foo2", 42); 

     System.out.println(jsonElement.toString()); 
     System.out.println(jsonElement.getAsString()); 
    } 
} 

uscita:

"foo" 
foo 
42 
42 
true 
true 
{"foo":"bar","foo2":42} 
Exception in thread "main" java.lang.UnsupportedOperationException: JsonObject 
    at com.google.gson.JsonElement.getAsString(JsonElement.java:185) 

Come si può vedere, l'uscita è in alcuni casi del tutto simili (o anche uguale), ma differisce in alcuni altri casi. getAsString() è definito solo per i tipi primitivi (e gli array che contengono solo un singolo elemento primitivo) e genera un'eccezione se chiamato ad es. su un oggetto. toString() funzionerà su tutti i tipi di JsonElement.

Ora quando è necessario utilizzare il metodo?

  • Se si desidera stampare le informazioni di debug, utilizzare toString()
  • Se si sa che si tratta di un tipo primitivo e si desidera visualizzare o scrivere il valore da qualche parte, utilizzare getAsString()
  • Se don conoscere il tipo o se si desidera lavoro con il valore (vale a dire fare calcoli), utilizzare nessuno dei due. Controlla invece il tipo di elemento e utilizza il metodo appropriato.
+0

Come per il tipo di stringa, toString() aggiungerà virgolette aggiuntive, questo potrebbe causare problemi. –