吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 2913|回复: 0
收起左侧

[Java 转载] OGNL对象图导航语言,获取多层JSON嵌套数据利器

[复制链接]
爆炒小提莫 发表于 2019-1-29 01:36
本帖最后由 爆炒小提莫 于 2019-1-29 01:43 编辑

OGNL对象图导航语言,获取多层JSON嵌套数据利器
例子:解析这个Json数据
[Java] 纯文本查看 复制代码
{
    "name": "json",
    "age": "P0101",
    "grants": {
        "del": "true",
        "updata": "false"
    }
}


首先导入pom依赖,使用的是Google 的Gson对Json数据做序列化或反序列化
[XML] 纯文本查看 复制代码
<!--GSON的序列化与反序列化工具包-->
        <dependency>
            <groupId>com.google.code.gson</groupId>
            <artifactId>gson</artifactId>
            <version>2.8.3</version>
        </dependency>
        <dependency>
            <groupId>ognl</groupId>
            <artifactId>ognl</artifactId>
            <!--不要使用最新版本3.2.x的ognl,会出现MemberAccess异常-->
            <version>3.1.12</version>
        </dependency>

[Java] 纯文本查看 复制代码
@Test
    public void fromJSON() throws OgnlException {
//准备一个Json字符串
        String json="{\"name\":\"json\",\"age\":\"P0101\",\"grants\":{\"del\":\"true\",\"updata\":\"false\"}}";
        Gson gson = new Gson();
// 将Json字符串反序列化为对象
        Map ret = gson.fromJson(json, new TypeToken<Map>() {
        }.getType());
        System.out.println(ret);
        System.out.println("---------------------");
// 使用OGNL获取对象中成员的值
        System.out.println(Ognl.getValue("grants.updata", ret));

打印结果
[Asm] 纯文本查看 复制代码
{name=json, age=P0101, grants={del=true, updata=false}}
---------------------
false


发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-26 17:26

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表