Qual è la differenza tra JsonElement#getAsString()
e JsonElement#toString()
?GSON JsonElement.getAsString vs. JsonElement.toString?
Ci sono situazioni in cui uno dovrebbe essere usato rispetto all'altro?
Qual è la differenza tra JsonElement#getAsString()
e JsonElement#toString()
?GSON JsonElement.getAsString vs. JsonElement.toString?
Ci sono situazioni in cui uno dovrebbe essere usato rispetto all'altro?
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?
toString()
getAsString()
Come per il tipo di stringa, toString() aggiungerà virgolette aggiuntive, questo potrebbe causare problemi. –