Json多层对象访问

Posted 如莲家园

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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

 

以上是关于Json多层对象访问的主要内容,如果未能解决你的问题,请参考以下文章

错误代码:错误域 = NSCocoaErrorDomain 代码 = 3840“JSON 文本没有以数组或对象和允许未设置片段的选项开头。”

java foreach是不是能对jsonarray进行遍历

java怎么解析多层嵌套的json得到每个元素

js怎么判断多层级对象是不是存在?

如何从片段中的 JSON 响应中的对象获取数据

String转json,多层json解析,并使用JsonElement对比两个json对象的值是否相等