Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

developframework/expression

Folders and files

NameName
Last commit message
Last commit date

Latest commit

History

83 Commits

Repository files navigation

Expression说明文档

1. 概述

用于方便的从对象、数组、Map等结构中获取值

1.1. 引用

<dependency>
	<groupId>com.github.developframework</groupId>
	<artifactId>expression</artifactId>
	<version>${version.expression}</version>
</dependency>

1.2. 依赖项

  • commons-lang3.jar
  • lombok.jar

2. 简单示例

2.1. 表达式对象

Expression expression = Expression.parse("user.name");

把字符串user.name 解析成一个表达式对象。

可以解析的表达式字符串有:

表达式字符串 描述
user.name 从根对象(根对象是对象或Map)取得user实例的name属性
users[0].name 从根对象(根对象是对象或Map)取得users数组实例的第1个元素的name属性
[0].name 从根对象(根对象是数组)取得第1个元素的name属性
user.say(name) 从根对象(根对象是对象或Map)调用user实例的say方法,并入参name
array[0][0] 支持多维数组 @since 1.6.0

2.2. 取值

例如有如下结构的User实体类:

@Data
public class User {
 private String name;
 private String[] emails;
 public User(String name, String[] emails) {
 this.name = name;
 this.emails = emails;
 }
}

有如下的数据结构关系:

User peter = new User("Peter", new String[]{"peter@163.com", "peter@qq.com"});
User tom = new User("Tom", new String[]{"tom@163.com", "tom@qq.com"});
User[] users = new User[]{peter, tom};
Map<String, Object> map = new HashMap<>();
map.put("users", users);

说明:peter,tom两个User对象存放于users数组对象中,而users数组对象存放于map中,键值为"users"。

那么假如要从map中取得peter的第二个email值。普通java代码如下:

String peterSecondEmail = ((User[])map.get("users"))[0].getMails()[1];

列为表达式:users[0].emails[1]

String expressionValue = "users[0].emails[1]";
String peterSecondEmail = ExpressionUtils.getValue(map, expressionValue, String.class);
System.out.println(peterSecondEmail);

About

Easy to get value from Object, Array or Map.

Resources

Stars

Watchers

Forks

Packages

No packages published

Languages

AltStyle によって変換されたページ (->オリジナル) /