package us.codecraft.webmagic.selector;
import com.jayway.jsonpath.JsonPath;
import java.util.ArrayList;
import java.util.List;
/**
* @author code4crafter@gmail.com <br>
* Date: 13-8-12 <br>
* Time: 下午12:54 <br>
*/
public class JsonPathSelector implements Selector {
private String jsonPathStr;
private JsonPath jsonPath;
public JsonPathSelector(String jsonPathStr) {
this.jsonPathStr = jsonPathStr;
this.jsonPath = JsonPath.compile(jsonPathStr);
}
@Override
public String select(String text) {
Object object = jsonPath.read(text);
if (object == null) {
return null;
}
if (object instanceof List) {
List list = (List) object;
if (list != null && list.size() > 0) {
return list.iterator().next().toString();
}
}
return object.toString();
}
@Override
public List<String> selectList(String text) {
List<String> list = new ArrayList<String>();
Object object = jsonPath.read(text);
if (object == null) {
return list;
}
if (object instanceof List) {
return (List<String>)object;
} else {
list.add(object.toString());
}
return list;
}
}