1. 程式人生 > >Google Gson使用小結

Google Gson使用小結

     最近開始接觸使用Google Gson Library,個人覺得還是挺好用的,在這裡簡單介紹一下開發中 Gson的常用功能!

1.Serialize JSON

package com.ricky.java.gson;

import java.util.ArrayList;
import java.util.List;
import com.google.gson.Gson;
import com.google.gson.GsonBuilder;
import com.ricky.java.gson.bean.User;

/**
 * How to Serialize and Deserialize JSON Data in Java
 * @author Ricky
 *
 */
public class GsonSerilize {

	public static void main(String[] args) {
		
		serializeObject();
		
		serializeList();
	}

	public static void serializeObject() {
		
		User user = new User();
		user.setId(1001);
//		user.setName("Ricky");
		user.setAge(25);
		
		Gson gson = new GsonBuilder().setPrettyPrinting().serializeNulls().create();
		
		System.out.println(gson.toJson(user));
	}

	public static void serializeList() {
		
		List<User> list = new ArrayList<User>();
		
		User user = new User();
		user.setId(1001);
		user.setName("Ricky");
		user.setAge(25);
		
		list.add(user);
		
		User user2 = new User();
		user2.setId(1002);
		user2.setName("Tim");
		user2.setAge(24);
		
		list.add(user2);
		
		Gson gson = new GsonBuilder().setPrettyPrinting().serializeNulls().create();
		
		System.out.println(gson.toJson(list));
	}
}

這裡主要用到了

Gson.toJson(Object src)

可以方便的序列化Java物件,如 Bean、List、Map物件等等。

2.Deserialize JSON
package com.ricky.java.gson;

import java.lang.reflect.Type;
import java.util.ArrayList;
import java.util.List;

import com.google.gson.Gson;
import com.google.gson.GsonBuilder;
import com.google.gson.reflect.TypeToken;
import com.ricky.java.gson.bean.User;

/**
 * How to Serialize and Deserialize JSON Data in Java
 * @author Ricky
 *
 */
public class GsonDeserilize {

	public static void main(String[] args) {
		
		deserializeObject();
		
		deserializeList();
	}

	public static void deserializeObject() {
		
		String json = "{\"id\":10010,\"name\":\"Ricky Feng\",\"age\":25}";
		
		Gson gson = new GsonBuilder().setPrettyPrinting().serializeNulls().create();
		
		User user = gson.fromJson(json, User.class);
		System.out.println(user);
	}

	public static void deserializeList() {
		
		String json = "[{\"id\":10010,\"name\":\"Ricky Feng\",\"age\":25},{\"id\":10011,\"name\":\"Mike\",\"age\":24}]";
		
		Gson gson = new GsonBuilder().setPrettyPrinting().serializeNulls().create();
		
		Type listType = new TypeToken<ArrayList<User>>(){}.getType();
		List<User> list = gson.fromJson(json, listType);
		System.out.println(list);
	}
}

這裡主要用到了

Gson.fromJson(String json, Class<User> classOfT)  非常方便的把JSON字串 反序列化成Java物件。


3.Parse JSON

package com.ricky.java.gson;

import com.google.gson.Gson;
import com.google.gson.GsonBuilder;
import com.google.gson.JsonElement;
import com.google.gson.JsonObject;
import com.google.gson.JsonParser;

/**
 * How to Parse JSON Data in Java With Gson
 * @author Ricky
 *
 */
public class GsonTest {

	public static void main(String[] args) {
		
		String json = "{\"Success\":true,\"Message\":\"Invalid access token.\"}";
		
		//1.JsonParser.parse(String json);
		JsonParser jsonParser = new JsonParser();
		JsonObject jo = (JsonObject)jsonParser.parse(json);
		boolean success = jo.get("Success").getAsBoolean();
		System.out.println(success);
		
		String msg = jo.get("Message").getAsString();
		System.out.println("msg="+msg);
		
		System.out.println("------------------");
		
		//2.Gson.fromJson(String json, Class<JsonElement> classOfT);
		Gson gson = new GsonBuilder().setPrettyPrinting().serializeNulls().create();
		JsonElement jelem = gson.fromJson(json, JsonElement.class);
		JsonObject jobj = jelem.getAsJsonObject(); //jelem.getAsJsonArray();
		
		msg = jobj.get("Message").getAsString();
		System.out.println("msg="+msg);
		
		boolean has = jobj.has("Status");
		System.out.println("has="+has);
	}

}


目前自己接觸到的Gson API就這麼多了,以後對Gson有更深入的瞭解會繼續更新!

相關推薦

Google Gson使用小結

     最近開始接觸使用Google Gson Library,個人覺得還是挺好用的,在這裡簡單介紹一下開發中 Gson的常用功能! 1.Serialize JSON package com.ric

Could not find class com.google.gson.Gson

解析json jar ont .class exc 保存 題解 clean ext 在Android開發中使用gson解析json字符串,出現異常:java.lang.classnotfoundexception:com.google.gson.Gson。解決方案如下:

google ---gson字符串數組用GSON解析然後用逗號隔開拼接,去掉最後一個逗號

on() int gson解析 google stringbu main 解析 string 逗號 public static void main(String[] args) { String ss= "[{\"type\":\"0\",\"id\":\"123\"},

使用google-gson類庫解析json文件

exception 輸入 json對象 bsp main arr class jsonarray bject 使用google-gson類庫解析json文件 使用JsonParser解析器來解析字符串和輸入流,變成json對象 代碼如下: public class Rea

Multiple dex files define Lcom/google/gson/internal/Streams$AppendableWriter$CurrentWrite;

write scan 項目 library 文件 查看 build file 解壓 開發中引入第三方 aar 時編譯同過,運行時出現問題: Multiple dex files define Lcom/google/gson/internal/Streams$Append

Android apk執行時錯誤java.lang.NoSuchMethodError: com.google.gson.GsonBuilder.setLenient

最近在Hisi3751V500上移植一個新的專案,在執行gitv牌照方apk的時候提示java.lang.NoSuchMethodError: com.google.gson.GsonBuilder.setLenient 06-03 17:44:28.966 I/dalvikvm( 36

一個jsonString引數的坑,com.google.gson.JsonSyntaxException: java.lang.IllegalStateException: Expected BEGI

com.google.gson.JsonSyntaxException: java.lang.IllegalStateException: Expected BEGIN_AR but was STRING at line 1 column 45 轉換的時候還是用gson吧,一勞永逸,自己手動輸入

com.google.gson.JsonSyntaxException: 2018-07-02T13:38:13.000Z

和移動端對接,系統報錯:com.google.gson.JsonSyntaxException: 2018-07-02T13:38:13.000Z 原因:使用 UTC 通用標準時,以z來標識 解決:拿我程式的程式碼舉例 Gson gson = new Gs

java.lang.NoSuchMethodError: com.google.gson.GsonBuilder.setLenient()Lcom/google/gson/GsonBuilder;

背景 在SpringBoot2.0.3.RELEASE的專案中檔案中加入json的依賴後,啟動出現以下的異常資訊 <dependency> <groupId>com.google.code.gson</groupId> <

Google Gson 使用詳解

Gson Summary      Java 解析 Json 最常用的類庫有:google 的 Gson、阿里巴巴的 FastJson、以及 Jackson。這些都是非常優秀而且常用的庫。   &nbs

java.lang.ClassCastException: com.google.gson.internal.LinkedTreeMap cannot be cast to java.lang.Int

異常:java.lang.ClassCastException: com.google.gson.internal.LinkedTreeMap cannot be cast to java.lang.Integer 原因:SQL查詢結果為count()統計結果個數,gson返回資料為js

利用Google Gson實現JSON字串和物件之間相互轉換

最近一個專案需要用到JSON,需要在JSON字串和物件之間相互轉換,在網上找了些資料,發現google的Gson還是比較不錯的。 廢話不說,下面是簡單的例子: 先上原始碼:下載(包含jar包) Person實體類 package com.hsun.json; /** * Pe

com.google.gson.stream.MalformedJsonException: Expected name at line 1 colum

話不多說,用Gson進行解析後臺傳來的json資料時,因為需要模擬資料,就儲存了一份在string.xml檔案中,減少測試時多次進行網路請求,結果拿來解析一下,報了錯,如下: Caused by: co

com.google.gson.JsonSyntaxException: java.lang.NumberFormatException使用GsonFormat,採坑記錄。

今天依舊從PostMan測試介面,拿JSON格式資料。使用GsonFormat進行格式轉換。 然後進行網路請求,但是執行程式,出現錯誤。 錯誤如下所示: com.google.gson.JsonSynt

com.google.gson.JsonArray 轉換成list

import java.util.ArrayList; import com.google.gson.Gson; import com.google.gson.JsonArray; import com.google.gson.JsonObject; import com.google.gson.

Google Gson使用指南

原文連結:http://www.jianshu.com/p/e740196225a4 JSON (官網) 是一種文字形式的資料交換格式,它比XML更輕量、比二進位制容易閱讀和編寫,調式也更加方便。其重要性不言而喻。解析和生成的方式很多,Java中最常用的類庫有:JS

Google Gson 禁止序列化內部類

本文內容大多基於官方文件和網上前輩經驗總結,經過個人實踐加以整理積累,僅供參考。 1 新建包含內部類的 POJO 類 public class User { private String account; private Stri

使用GSON丟擲com.google.gson.stream.MalformedJsonException異常

今天在用GSON解析json資料的時候,老是丟擲這個異常,意思是難看的json資料異常。 Exception in thread "main" com.google.gson.JsonSyntaxException: com.google.gson.stream.Malfo

Program type already present: com.google.gson.FieldAttributes

錯誤如下圖 問題原因:工程重複引用了gson的jar包所致。 解決辦法:在build.gradle的dependencies中加入程式碼:作用就是去除重複gson包 dependencies

google-GSON解析和生成JSON資料

public class GsonDemo { public static void main(String[] args) { Map map = new HashMap(); map.put("name", "nam