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的字段一样