12
JsonElement#getAsString()
與JsonElement#toString()
有什麼區別?GSON JsonElement.getAsString與JsonElement.toString?
是否有一種情況下應該使用另一種?
JsonElement#getAsString()
與JsonElement#toString()
有什麼區別?GSON 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()
至於字符串類型,toString()會添加額外的引號,這可能導致問題。 –