1. 程式人生 > >快速上手Gson解析json

快速上手Gson解析json

 Gson(google封裝的)的一款解析json的工具類

 匯入jar包。jar包可以通過Maven倉庫下載

https://mvnrepository.com/artifact/com.google.code.gson/gson

json例子:

直接上程式碼:

// strResult 就是原始json字串
JsonObject object = new JsonParser().parse(strResult).getAsJsonObject();

// 獲取data裡面的陣列
JsonArray dateArray = object.getAsJsonArray("data");

// 然後遍歷陣列物件
for (JsonElement jsonElement : dateArray) {

    JsonObject asJsonObject = jsonElement.getAsJsonObject();


}

看看數組裡面每一個元素又是什麼,挺複雜的吧,不過想要獲取你想要的也是很容易。:

 

for (JsonElement jsonElement : dateArray) {
				
	JsonObject asJsonObject = jsonElement.getAsJsonObject();

    // 直接獲取type屬性
	String type = asJsonObject.get("type").getAsString();
	System.out.print("type:" + type  + "\n");

    // 獲取user裡面的avatar_url
	JsonElement user = asJsonObject.get("user");
				
	if (user != null) {
		JsonObject userobj = user.getAsJsonObject();
		String avatar_url = userobj.get("avatar_url").getAsString();
		System.out.println("avatar_url:" + avatar_url);
		arrayList.add(avatar_url);
	}
    
    //假如裡面又有一個數組物件就用asJsonObject .getAsJsonArray("XXX");然後再遍歷,套路都是一樣的。
    
    //獲取analytics裡面的onload下的url
   JsonElement analytics = asJsonObject.get("analytics");
				
	if (analytics != null) {
	JsonObject analyticsObject = analytics.getAsJsonObject();
		JsonElement onloadElement = analyticsObject.get("onload");
		if (onloadElement != null ) {
		String onloadUrl = onloadElement.getAsJsonObject().get("url").getAsString();
		System.out.println(onloadUrl);
		}
	}
			
}

把java物件轉為json字串就更簡單了

Gson gson = new Gson();
			
String json = gson.toJson(物件);
			

如果你需要的東西比較多,就需要javaBean來處理比較簡單。

JsonArray asJsonArray = new JsonParser().parse(strResult).getAsJsonObject().getAsJsonArray("data");
		
for (JsonElement jsonElement : asJsonArray) {
	JsonObject asJsonObject = jsonElement.getAsJsonObject();
			
	JsonElement userE = asJsonObject.get("user");
			
	if (userE != null) {
				
		User user = new Gson().fromJson(userE, new TypeToken<User>() {}.getType());
				
		System.out.println(user.toString());
			}
			
		}

這裡用到了TypeToken這個類泛型裡面的的User就是你所要封裝的實體類,注意名字需要你json的欄位一樣