Json多层对象访问
背景说明
本文主要记录演示,利用Gson工具,对多层的 Json 数据进行转换读取的示例。原始 Json 字符串格式化效果如下:
示例代码
import java.util.Iterator; import com.google.gson.Gson; import com.google.gson.GsonBuilder; import com.google.gson.JsonArray; import com.google.gson.JsonElement; import com.google.gson.JsonObject; public class Lx { public static void main(String[] args) { String json="{\"name\":\"张三\",\"canAccess\":true,\"count\":3," + "\"data\":{\"openid\":[\"onnW20SNugoYLqPNOPExm3xae_os\",\"onnW20cNQF_T_YOLKIAmdwEbELIE\",\"onnW20WYF3UG0RdW5S-GGtdSsSB0\"]}}"; //Gson gson = new Gson(); Gson gson = new GsonBuilder().setDateFormat("yyyy-MM-dd HH:mm:ss").create(); //字符串转换成对象 JsonObject obj = gson.fromJson(json, JsonObject.class); //普通取值 String name = obj.get("name").getAsString(); //字符串 boolean canAccess = obj.get("canAccess").getAsBoolean(); //布尔 int count = obj.get("count").getAsInt(); //数值 System.out.println("姓名:" + name); System.out.println("是否可访问:" + canAccess); System.out.println("数量:" + count); //对象及数组 JsonArray openidArr = obj.get("data").getAsJsonObject().get("openid").getAsJsonArray(); //数组 for(Iterator<JsonElement> it= openidArr.iterator(); it.hasNext();) { System.out.println(it.next().getAsString()); } } }
输出结果
姓名:张三 是否可访问:true 数量:3 onnW20SNugoYLqPNOPExm3xae_os onnW20cNQF_T_YOLKIAmdwEbELIE onnW20WYF3UG0RdW5S-GGtdSsSB0