public class GjonSpm {
public static void main(String[] args) {
Gson gson = new GsonBuilder().create();
gson.toJson("Hello", System.out);
gson.toJson(123, System.out);
}
}
轉自http://www.importnew.com/16630.html
在上面的例子中,我們創建了一個Gson實例,並把Java String和int轉化爲JSON對象。以上代碼命令行裏的輸出結果如下:
"Hello"123
注意,上述的結果都將輸入到命令行。該toJason()方法有兩個參數,Java對象轉換爲JSON和可追加(Java的文檔)的一個實例。我們可以很容易地改變了一個文件或網絡流。 public static void main(String[] args) throws IOException {
Writer writer = new FileWriter("Output.json");
Gson gson = new GsonBuilder().create();
gson.toJson("Hello", writer);
gson.toJson(123, writer);
writer.close();
}
注意
爲什麼變量聲明爲Writer類型,而實際類型是FileWriter?
儘量使用泛型是一個很好的方法。在上例中,我們只使用了Appendable和Writer接口定義的方法。使用泛型使代碼更易於移植和維護
以上代碼生成文件:包含JSON對象的Output.json。注意,這裏我們使用了字符流而不是字節流。因爲toJson()方法需要一個Appendanble實例,而字節流不能實現Appendable接口,所以我們使用了字符流。Appendable接口處理字符而不是字節。Java提供了InputStreanReader(Java文檔)和OutputStreamWriter(Java文檔)類進行字節流與字符流的轉換,如下面的例子。
注意
注意,使用InputStreamReader和OutputStreamWriter類時,如果不提供編碼或者字符集,轉換將使用平臺默認字符集。這將降低代碼的可移植性,且在其他平臺上運行將可能產生錯誤行爲。
public static void main(String[] args) throws IOException {
Writer writer = new OutputStreamWriter(new FileOutputStream("Output.json") , "UTF-8");
Gson gson = new GsonBuilder().create();
gson.toJson("Hello", writer);
gson.toJson(123, writer);
writer.close();
}
如你所見,我們只需要改變實例的一部分。代碼的剩餘部分沒有任何變化。這就是使用接口代替類作爲變量類型的好處之一。