快速上手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的字段一样

猜你喜欢

转载自blog.csdn.net/weixin_42245930/article/details/85158617
今日推荐