studio - gson kotlin
GSON JsonElement.getAsString vs. JsonElement.toString? (1)
Suponiendo que te refieres a JsonElement
:
getAsString()
Método de conveniencia para obtener este elemento como un valor de cadena.
Este método accede y devuelve una propiedad del elemento, es decir, el valor del elemento como un objeto String
java.
toString()
Devuelve una representación de cadena de este elemento.
Este método es el método "estándar" de java toString
, es decir, devuelve una representación humana legible del propio elemento.
Para una mejor comprensión, déjame darte un ejemplo:
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());
}
}
Salida:
"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)
Como puede ver, la salida es en algunos casos bastante similar (o incluso igual), pero difiere en otros casos. getAsString()
solo se define para los tipos primitivos (y las matrices que contienen un solo elemento primitivo) y lanza una excepción si se llama, por ejemplo, en un objeto. toString()
funcionará en todos los tipos de JsonElement
.
Ahora, ¿cuándo deberías usar qué método?
- Si desea imprimir información de depuración, use
toString()
- Si sabe que está tratando con un tipo primitivo y desea mostrar o escribir el valor en algún lugar, use
getAsString()
- Si no conoce el tipo o si desea trabajar con el valor (es decir, hacer cálculos), no utilice ninguno. En su lugar, compruebe el tipo de elemento y utilice el método apropiado.
¿Cuál es la diferencia entre JsonElement#getAsString()
y JsonElement#toString()
?
¿Hay situaciones donde uno debería ser usado sobre el otro?