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

 

posted @ 2017-11-08 15:51  月下麦田  阅读(1312)  评论(0编辑  收藏  举报