import com.google.common.collect.Lists;
import com.jayway.jsonpath.Configuration;
import com.jayway.jsonpath.DocumentContext;
import com.jayway.jsonpath.JsonPath;
import com.jayway.jsonpath.Option;
import java.util.List;
/**
* @author shiqil.liu
* @date 2019-08-22 10:41
*/
public class DealJsonPath {
public static void main(String[] args) {
String json = "{\n" +
" \"status\":0,\n" +
" \"message\":\"ok\",\n" +
" \"results\":[\n" +
" {\n" +
" \"name\":\"泰山风景名胜区\",\n" +
" \"location\":{\n" +
" \"lat\":36.264227,\n" +
" \"lng\":117.086616\n" +
" },\n" +
" \"address\":\"泰安市岱岳区东岳大街西段501号\",\n" +
" \"province\":\"山东省\",\n" +
" \"city\":\"泰安市\",\n" +
" \"area\":\"岱岳区\",\n" +
" \"street_id\":\"ea4a3dc942c4b72f4f5547aa\",\n" +
" \"telephone\":\"(0538)96008888\",\n" +
" \"detail\":1,\n" +
" \"uid\":\"ea4a3dc942c4b72f4f5547aa\"\n" +
" },\n" +
" {\n" +
" \"name\":\"泰山风景名胜区-南天门\",\n" +
" \"location\":{\n" +
" \"lat\":36.262014,\n" +
" \"lng\":117.110857\n" +
" },\n" +
" \"address\":\"泰安市泰山区红门路54号泰山风景名胜区内\",\n" +
" \"province\":\"山东省\",\n" +
" \"city\":\"泰安市\",\n" +
" \"area\":\"泰山区\",\n" +
" \"detail\":1,\n" +
" \"uid\":\"a3e8341c5497a7964afd3f55\"\n" +
" },\n" +
" {\n" +
" \"name\":\"泰山站\",\n" +
" \"location\":{\n" +
" \"lat\":36.193518,\n" +
" \"lng\":117.116341\n" +
" },\n" +
" \"address\":\"泰安市泰山区龙潭路\",\n" +
" \"province\":\"山东省\",\n" +
" \"city\":\"泰安市\",\n" +
" \"area\":\"泰山区\",\n" +
" \"street_id\":\"4de99463948347e088b988b3\",\n" +
" \"telephone\":\"(0538)2181747\",\n" +
" \"detail\":1,\n" +
" \"uid\":\"4de99463948347e088b988b3\"\n" +
" },\n" +
" {\n" +
" \"name\":\"泰山温泉城\",\n" +
" \"location\":{\n" +
" \"lat\":36.079672,\n" +
" \"lng\":117.23363\n" +
" },\n" +
" \"address\":\"山东省泰安市高新区徂徕镇郑家庄村\",\n" +
" \"province\":\"山东省\",\n" +
" \"city\":\"泰安市\",\n" +
" \"area\":\"岱岳区\",\n" +
" \"street_id\":\"cff95196212daf6c9f09f73c\",\n" +
" \"detail\":1,\n" +
" \"uid\":\"cff95196212daf6c9f09f73c\"\n" +
" },\n" +
" {\n" +
" \"name\":\"泰山学院\",\n" +
" \"location\":{\n" +
" \"lat\":36.228513,\n" +
" \"lng\":117.045757\n" +
" },\n" +
" \"address\":\"泰安市岱岳区东岳大街525号\",\n" +
" \"province\":\"山东省\",\n" +
" \"city\":\"泰安市\",\n" +
" \"area\":\"岱岳区\",\n" +
" \"street_id\":\"2c0bd6c5f06b4cd643ab9ae7\",\n" +
" \"telephone\":\"(0538)6715631,(0538)6715599\",\n" +
" \"detail\":1,\n" +
" \"uid\":\"2c0bd6c5f06b4cd643ab9ae7\"\n" +
" },\n" +
" {\n" +
" \"name\":\"泰山学院(南校区)\",\n" +
" \"location\":{\n" +
" \"lat\":36.138018,\n" +
" \"lng\":117.083513\n" +
" },\n" +
" \"address\":\"泰安市岱岳区凤天路789号\",\n" +
" \"province\":\"山东省\",\n" +
" \"city\":\"泰安市\",\n" +
" \"area\":\"岱岳区\",\n" +
" \"street_id\":\"1816533484df9705fa2d61a4\",\n" +
" \"telephone\":\"(0538)6711231\",\n" +
" \"detail\":1,\n" +
" \"uid\":\"1816533484df9705fa2d61a4\"\n" +
" },\n" +
" {\n" +
" \"name\":\"泰山锦绣谷\",\n" +
" \"location\":{\n" +
" \"lat\":36.311547,\n" +
" \"lng\":117.161553\n" +
" },\n" +
" \"address\":\"进宫沟附近\",\n" +
" \"province\":\"山东省\",\n" +
" \"city\":\"泰安市\",\n" +
" \"area\":\"泰山区\",\n" +
" \"detail\":1,\n" +
" \"uid\":\"4edf9fbfda0665e9cc06a4e8\"\n" +
" },\n" +
" {\n" +
" \"name\":\"泰山区\",\n" +
" \"location\":{\n" +
" \"lat\":36.199445,\n" +
" \"lng\":117.141411\n" +
" },\n" +
" \"address\":\"山东省泰安市\",\n" +
" \"province\":\"山东省\",\n" +
" \"city\":\"泰安市\",\n" +
" \"area\":\"泰山区\",\n" +
" \"detail\":0,\n" +
" \"uid\":\"d614eca365df78a85a1093fc\"\n" +
" },\n" +
" {\n" +
" \"name\":\"泰山新兴园\",\n" +
" \"location\":{\n" +
" \"lat\":36.204916,\n" +
" \"lng\":117.072936\n" +
" },\n" +
" \"address\":\"粥店街道长城西路69号\",\n" +
" \"province\":\"山东省\",\n" +
" \"city\":\"泰安市\",\n" +
" \"area\":\"岱岳区\",\n" +
" \"street_id\":\"a6f8707170120c2903ff2d66\",\n" +
" \"detail\":1,\n" +
" \"uid\":\"a6f8707170120c2903ff2d66\"\n" +
" },\n" +
" {\n" +
" \"name\":\"泰山金华大厦\",\n" +
" \"location\":{\n" +
" \"lat\":36.189219,\n" +
" \"lng\":117.105924\n" +
" },\n" +
" \"address\":\"泰安市泰山区泰山大街326号\",\n" +
" \"province\":\"山东省\",\n" +
" \"city\":\"泰安市\",\n" +
" \"area\":\"泰山区\",\n" +
" \"street_id\":\"8036a74b25b5d6944e6d46b1\",\n" +
" \"detail\":1,\n" +
" \"uid\":\"8036a74b25b5d6944e6d46b1\"\n" +
" }\n" +
" ]\n" +
"}";
DocumentContext doc = JsonPath.parse(json, Configuration.builder().options(Option.ALWAYS_RETURN_LIST).build());
List list = doc.read("$.results[*][?(@.telephone)].location.*");
List<String> result = Lists.newArrayListWithCapacity(list.size());
for (Object data : list) {
if (data instanceof String) {
result.add((String)data);
} else if (data != null){
result.add(data.toString());
}
}
result.forEach(System.out::println);
}
}