集合投影
投影允许集合驱动子表达式的评估,结果是一个新的集合。投影的语法是.![projectionExpression]
。例如,假设我们有一个发明家列表,但想要得到他们出生地的城市列表。实际上,我们想要对发明家列表中的每个条目评估placeOfBirth.city
。以下示例使用投影来实现:
-
Java
-
Kotlin
// 评估为 ["Smiljan", "Idvor"]
List placesOfBirth = parser.parseExpression("members.![placeOfBirth.city]")
.getValue(societyContext, List.class);
// 评估为 ["Smiljan", "Idvor"]
val placesOfBirth = parser.parseExpression("members.![placeOfBirth.city]")
.getValue(societyContext) as List<*>
数组和任何实现java.lang.Iterable
或java.util.Map
的内容都支持投影。当使用映射来驱动投影时,投影表达式针对映射中的每个条目进行评估(表示为Java的Map.Entry
)。对映射进行投影的结果是一个列表,该列表由对每个映射条目评估投影表达式的结果组成。
Spring表达式语言还支持集合投影的安全导航。 有关详细信息,请参阅安全集合选择和投影。 |