Spring Expression Language(SpEL)用法示例


如响应体:
BODY
"{...}":
 "code": 200
 "msg": "成功!"
 "data":
   "totalResources": 113
   "badResources": 36
   "fixedResources": 18
   "assginableResources": 95
   "goodResources": 41
   "yesterday":
     "date": "26日星期二"
     "high": "高温 12℃"
     "fx": "东北风"
     "low": "低温 7℃"
     "fl": "<![CDATA[4-5级]]>"
     "type": "小雨"
     "city": "杭州"
     "aqi": null
 "forecast":
    0:
     "date": "27日星期三"
     "high": "高温 9℃"
     "fengli": "<![CDATA[<3级]]>"
     "low": "低温 6℃"
     "fengxiang": "无持续风向"
     "type": "小到中雨"
    1:
     "date": "28日星期四"
     "high": "高温 10℃"
     "fengli": "<![CDATA[<3级]]>"
     "low": "低温 6℃"
     "fengxiang": "东北风"
     "type": "阴"
    2:
     "date": "3日星期天"
     "high": "高温 11℃"
     "fengli": "<![CDATA[3-4级]]>"
     "low": "低温 3℃"
     "fengxiang": "西北风"
     "type": "阴"
  "ganmao": "相对于今天将会出现大幅度降温,空气湿度较大,易发生感冒,请注意适当增加衣服。"
  "wendu": "7"
用法示例:
  • 三元运算符

表达式:{表达式a}?:{表达式b}

若表达式a为真(获取到的值不为null),则获取表达式a的值。否则获取表达式b的值。

示例:{$.data.city}?:{$.msg} 获取值为杭州

  • 条件表达式if/else:

表达式:

and:({表达式a} 条件1 and {表达式b} 条件2 ...) ? {表达式c}:{表达式d}

若表达式a满足条件1与表达式b满足条件2(同时满足)时,则获取表达式c的值,否则获取表达式d的值。

or:({表达式a} 条件1 or {表达式b} 条件2 ...)? {表达式c}:{表达式d}

若表达式a满足条件1获表达式b满足条件2时,则获取表达式c的值,否则获取表达式d的值。

not:({表达式a} 条件1 and !({表达式b} 条件2) ...)? {表达式c}:{表达式d}

若表达式a满足条件1与表达式b不满足条件2时,则获取表达式c的值,否则获取表达式d的值。

示例:

{$.code} >= 200 ? {$.data.city}:{$.msg} 获取值为杭州

({$.data.city} == "杭州" and {$.code} >=200) ? {$.data.city}:{$.msg} 获取值为杭州

({$.data.city} != "杭州" or {$.code} >=200) ? {$.data.city}:{$.msg} 获取值为杭州

({$.data.forecast}.size() >=5 and {$.code} >=1) ? {$.data.city}:{$.msg} 获取值为杭州

({$.data.city} == "杭州" and !({$.code} >=1)) ? {$.data.city}:{$.msg} 获取值为成功!

  • 变量

始终定义变量#this并引用当前评估对象(解析非限定引用)。始终定义变量#root并引用根上下文对象。虽然#this可能会随着表达式的组件的评估而变化,但#root始终引用根。

表达式:{表达式a}.?[变量条件b]

表示获取从表达式a值中满足变量条件b的值。

{$.data.forecast[*].type}.?[#this=="阴"] 获取值为["阴","阴"]

{$.data.forecast[*].type}.?[#this=="阴"].size() 获取值为2

  • 关系运算符

表达式:{表达式a} 运算符 {表达式b}... true/false 运算符支持等于、不等于、小于或小于等于、大于或大于等于,也支持基于正则表达式的运算符

若表达式a值或整体的表达式满足关系运算表达式,则值为true,反之为false。若表达式获取数值时为string类型,则需要转为Int进行计算。

示例:

{$.data.city}=="杭州" 获取值为true

({$.data.city} == "杭州" and {$.code} == 200) 获取值为true

{$.data.totalResources} > {$.data.assginableResources} 获取值为true

{$.data.assginableResources}+{$.data.fixedResources} 获取值为113

({$.data.assginableResources} + {$.data.fixedResources}) == {$.data.totalResources} 获取值为true

若返回值为string类型,则需要转Int,再进行逻辑运算:

new Integer({$.data.assginableResources}) + new Integer({$.data.fixedResources}) == new Integer({$.data.totalResources}) 获取值为true

未完待续~~

Copyright © GoApi 2018 all right reserved,powered by Gitbook该文件修订时间: 2020-03-16 10:40:46

results matching ""

    No results matching ""