Skip to content

Commit 95523f9

Browse files
1.2.1
1 parent 2821b40 commit 95523f9

File tree

2 files changed

+221
-225
lines changed

2 files changed

+221
-225
lines changed

README.md

Lines changed: 84 additions & 84 deletions
Original file line numberDiff line numberDiff line change
@@ -1,84 +1,84 @@
1-
# Expression说明文档
2-
3-
## 1. 概述
4-
5-
用于方便的从对象、数组、Map等结构中获取值
6-
7-
### 1.1. 引用
8-
9-
```xml
10-
<dependency>
11-
<groupId>com.github.developframework</groupId>
12-
<artifactId>expression</artifactId>
13-
<version>${version.expression}</version>
14-
</dependency>
15-
```
16-
17-
### 1.2. 依赖项
18-
19-
- commons-lang3.jar
20-
- slf4j-api.jar
21-
- lombok.jar
22-
23-
## 2. 简单示例
24-
25-
### 2.1. 表达式对象
26-
```java
27-
Expression expression = Expression.parse("user.name");
28-
```
29-
30-
把字符串`user.name` 解析成一个表达式对象。
31-
32-
可以解析的表达式字符串有:
33-
34-
| 表达式字符串 | 描述 |
35-
| ------------- | ---------------------------------------- |
36-
| user.name | 从根对象(根对象是对象或Map)取得user实例的name属性 |
37-
| users[0].name | 从根对象(根对象是对象或Map)取得users数组实例的第1个元素的name属性 |
38-
| [0].name | 从根对象(根对象是数组)取得第1个元素的name属性 |
39-
40-
### 2.2. 取值
41-
42-
例如有如下结构的User实体类:
43-
44-
```java
45-
@Data
46-
public class User {
47-
48-
private String name;
49-
50-
private String[] emails;
51-
52-
public User(String name, String[] emails) {
53-
this.name = name;
54-
this.emails = emails;
55-
}
56-
}
57-
```
58-
59-
有如下的数据结构关系:
60-
61-
```java
62-
User peter = new User("Peter", new String[]{"peter@163.com", "peter@qq.com"});
63-
User tom = new User("Tom", new String[]{"tom@163.com", "tom@qq.com"});
64-
User[] users = new User[]{peter, tom};
65-
Map<String, Object> map = new HashMap<>();
66-
map.put("users", users);
67-
```
68-
69-
说明:peter,tom两个User对象存放于users数组对象中,而users数组对象存放于map中,键值为"users"。
70-
71-
那么假如要从map中取得peter的第二个email值。普通java代码如下:
72-
73-
```java
74-
String peterSecondEmail = ((User[])map.get("users"))[0].getMails()[1];
75-
```
76-
77-
列为表达式:`users[0].emails[1]`
78-
79-
```java
80-
String expressionValue = "users[0].emails[1]";
81-
String peterSecondEmail = ExpressionUtils.getValue(map, expressionValue, String.class);
82-
System.out.println(peterSecondEmail);
83-
```
84-
1+
# Expression说明文档
2+
3+
## 1. 概述
4+
5+
用于方便的从对象、数组、Map等结构中获取值
6+
7+
### 1.1. 引用
8+
9+
```xml
10+
<dependency>
11+
<groupId>com.github.developframework</groupId>
12+
<artifactId>expression</artifactId>
13+
<version>${version.expression}</version>
14+
</dependency>
15+
```
16+
17+
### 1.2. 依赖项
18+
19+
- commons-lang3.jar
20+
- slf4j-api.jar
21+
- lombok.jar
22+
23+
## 2. 简单示例
24+
25+
### 2.1. 表达式对象
26+
```java
27+
Expression expression = Expression.parse("user.name");
28+
```
29+
30+
把字符串`user.name` 解析成一个表达式对象。
31+
32+
可以解析的表达式字符串有:
33+
34+
| 表达式字符串 | 描述 |
35+
| ------------- | ---------------------------------------- |
36+
| user.name | 从根对象(根对象是对象或Map)取得user实例的name属性 |
37+
| users[0].name | 从根对象(根对象是对象或Map)取得users数组实例的第1个元素的name属性 |
38+
| [0].name | 从根对象(根对象是数组)取得第1个元素的name属性 |
39+
40+
### 2.2. 取值
41+
42+
例如有如下结构的User实体类:
43+
44+
```java
45+
@Data
46+
public class User {
47+
48+
private String name;
49+
50+
private String[] emails;
51+
52+
public User(String name, String[] emails) {
53+
this.name = name;
54+
this.emails = emails;
55+
}
56+
}
57+
```
58+
59+
有如下的数据结构关系:
60+
61+
```java
62+
User peter = new User("Peter", new String[]{"peter@163.com", "peter@qq.com"});
63+
User tom = new User("Tom", new String[]{"tom@163.com", "tom@qq.com"});
64+
User[] users = new User[]{peter, tom};
65+
Map<String, Object> map = new HashMap<>();
66+
map.put("users", users);
67+
```
68+
69+
说明:peter,tom两个User对象存放于users数组对象中,而users数组对象存放于map中,键值为"users"。
70+
71+
那么假如要从map中取得peter的第二个email值。普通java代码如下:
72+
73+
```java
74+
String peterSecondEmail = ((User[])map.get("users"))[0].getMails()[1];
75+
```
76+
77+
列为表达式:`users[0].emails[1]`
78+
79+
```java
80+
String expressionValue = "users[0].emails[1]";
81+
String peterSecondEmail = ExpressionUtils.getValue(map, expressionValue, String.class);
82+
System.out.println(peterSecondEmail);
83+
```
84+

0 commit comments

Comments
 (0)