Ответ 1
Предполагая, что вы имеете в виду 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()
- Если вы не знаете тип или хотите работать со значением (т.е. делать вычисления), не используйте ни того, ни другого. Вместо этого проверьте тип элемента и используйте соответствующий метод.