OGNL
OGNL 是Object-Graph Navigation Language的缩写,它是一种功能强大的表达式语言。通过简单而一致的语法,OGNL 可以用来存取对象的任意属性,调用对象的方法,遍历对象的整个结构图,实现字段类型转换等功能。在 Java 平台上,OGNL 被广泛用于各种框架中,如 Struts 和 MyBatis,以简化对 Java 对象的操作和访问1234。
这种针对复杂的 json 语句
1
2
3
4
5
6
7
8
9
10
11
12
|
{
"abc":{
"c1":[
"1"
]
},
"bcd":{
"abcs":{
"a":"b"
}
}
}
|
如何使用下面通过 java 来处理
pom 中加入
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
|
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-core</artifactId>
<version>2.11.4</version>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>2.11.4</version>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-annotations</artifactId>
<version>2.11.4</version>
</dependency>
<dependency>
<groupId>ognl</groupId>
<artifactId>ognl</artifactId>
<version>3.1.26</version>
</dependency>
|
下面封装 JsonUtils 来处理
这段代码定义了一个名为JsonUtils
的工具类,用于处理 JSON 数据和 OGNL 表达式。下面是对每个部分的详细注释:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
|
public class JsonUtils {
// 使用Logger类记录日志,类名为"JsonUtils"
private static Logger logger = Logger.getLogger("JsonUtils");
// 创建一个全局唯一的ObjectMapper实例,用于JSON操作
private final static ObjectMapper objectMapper = new ObjectMapper();
// 提供一个公共方法来获取ObjectMapper实例
public static ObjectMapper getInstance() {
return objectMapper;
}
// 将JSON字符串解析为Java对象。泛型方法允许指定返回对象的类型
public static <T> T parse(String jsonStr, Class<T> clazz) throws Exception {
// 使用ObjectMapper的readValue方法将JSON字符串转换为Java对象
return getInstance().readValue(jsonStr, clazz);
}
// 使用OGNL表达式从Map中获取值。泛型方法允许指定返回值的类型
public static <T> T getValue(Map map, String path, Class<T> klass) throws Exception {
// 创建一个OGNL上下文对象
OgnlContext ctx = new OgnlContext();
// 设置上下文的根对象为传入的Map
ctx.setRoot(map);
// 使用OGNL表达式获取Map中指定路径的值
T value = (T) Ognl.getValue(path, ctx, ctx.getRoot());
return value;
}
}
|
这个类提供了两个静态方法:parse
用于将 JSON 字符串转换为 Java 对象,而getValue
用于使用 OGNL 表达式从 Map 中提取值。这些方法都是泛型的,允许调用者指定期望的返回类型。此外,类中还定义了一个ObjectMapper
实例,它是处理 JSON 数据的核心工具。