SC@SDUSC
@RequestParameter可以获取@Gecco里定义的url变量{code}。
@Ajax是页面中的ajax请求,JD的商品价格和推广语都是通过ajax请求异步获取的,gecco支持异步ajax请求,指定ajax请求的url地址,url中的变量可以通过两种方式指定。
一种是花括号{},可以获取request的参数类似@RequestParameter,例子中获取推广语的{code}是matchUrl="http://item.jd.com/{code}.html"中的code;
一种是中括号[],可以获取bean中的任意属性。例子中获取价格的[code]是变量private String code;。
##json数据的元素抽取 商品的价格是通过ajax获取的,ajax一般返回的都是json格式的数据,这里需要将json格式的数据抽取出来。我们先定义价格的Bean:
public class JDPrice implements JsonBean {
private static final long serialVersionUID = -5696033709028657709L;
@JSONPath("$.id[0]")
private String code;
@JSONPath("$.p[0]")
private float price;
@JSONPath("$.m[0]")
private float srcPrice;
public float getPrice() {
return price;
}
public void setPrice(float price) {
this.price = price;
}
public float getSrcPrice() {
return srcPrice;
}
public void setSrcPrice(float srcPrice) {
this.srcPrice = srcPrice;
}
public String getCode() {
return code;
}
public void setCode(String code) {
this.code = code;
}
}
我们获取的商品价格信息的json数据格式为:[{"id":"J_1861098","p":"6488.00","m":"7488.00"}]。可以看到是一个数组,因为这个接口其实可以批量获取商品的价格。json数据的数据抽取使用@JSONPath注解,语法是使用的fastjson的JSONPath语法。