本帖最后由 爆炒小提莫 于 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
|