2015-12-06 124 views

回答

15

假設你是指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()
  • 如果你不不知道類型,或者如果你想工作與價值(即做計算),既不使用。相反,請檢查元素的類型並使用適當的方法。
+0

至於字符串類型,toString()會添加額外的引號,這可能導致問題。 –