В чем разница между JsonElement#getAsString() и JsonElement#toString()?
Есть ли ситуации, когда нужно использовать другую?
В чем разница между JsonElement#getAsString() и JsonElement#toString()?
Есть ли ситуации, когда нужно использовать другую?
Предполагая, что вы имеете в виду JsonElement:
getAsString()
чтобы получить этот элемент как строковое значение.
Этот метод обращается и возвращает свойство элемента, то есть значение элемента как объекта java String.
toString()
Возвращает строковое представление этого элемента.
Этот метод является стандартным методом java toString, т.е. возвращает человеческое читаемое представление самого элемента.
Для лучшего понимания позвольте мне привести пример:
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());
}
}
Вывод:
"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)
Как вы можете видеть, выход в некоторых случаях очень похож (или даже равен), но в некоторых других случаях он отличается. getAsString() определяется только для примитивных типов (и массивов, содержащих только один примитивный элемент), и генерирует исключение, если оно вызвано, например. на объект. toString() будет работать на всех типах JsonElement.
Теперь, когда вы должны использовать какой метод?
toString()getAsString()