爆炒小提莫 发表于 2019-1-29 01:36

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

本帖最后由 爆炒小提莫 于 2019-1-29 01:43 编辑

OGNL对象图导航语言,获取多层JSON嵌套数据利器
例子:解析这个Json数据
{
    "name": "json",
    "age": "P0101",
    "grants": {
      "del": "true",
      "updata": "false"
    }
}

首先导入pom依赖,使用的是Google 的Gson对Json数据做序列化或反序列化
<!--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>
@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));
打印结果
{name=json, age=P0101, grants={del=true, updata=false}}
---------------------
false

页: [1]
查看完整版本: OGNL对象图导航语言,获取多层JSON嵌套数据利器