JsonPath入门教程

有时候需要从json里面提取相关数据,必须得用到如何提取信息的知识,下面来写一下

语法格式

JsonPath

描述

$

根节点

@

当前节点

.or[]

子节点

..

选择所有符合条件的节点

*

所有节点

[]

迭代器标示,如数组下标

[,]

支持迭代器中做多选

[start:end:step]

数组切片运算符

?()

支持过滤操作

()

支持表达式计算

json格式的数据:

{ "store": {
    "book": [ 
      { "category": "reference",
        "author": "Nigel Rees",
        "title": "Sayings of the Century",
        "price": 8.95
      },
      { "category": "fiction",
        "author": "Evelyn Waugh",
        "title": "Sword of Honour",
        "price": 12.99,
        "isbn": "0-553-21311-3"
      }
    ],
    "bicycle": {
      "color": "red",
      "price": 19.95
    }
  }
}

测试代码:

import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.jayway.jsonpath.JsonPath;

import java.util.List;

/*
{ "store": {
    "book": [
      { "category": "reference",
        "author": "Nigel Rees",
        "title": "Sayings of the Century",
        "price": 8.95
      },
      { "category": "fiction",
        "author": "Evelyn Waugh",
        "title": "Sword of Honour",
        "price": 12.99,
        "isbn": "0-553-21311-3"
      }
    ],
    "bicycle": {
      "color": "red",
      "price": 19.95
    }
  }
}
 */

public class JsonPathTest {
    private static String jsonStr="{ "store": {
" +
            "    "book": [ 
" +
            "      { "category": "reference",
" +
            "        "author": "Nigel Rees",
" +
            "        "title": "Sayings of the Century",
" +
            "        "price": 8.95
" +
            "      },
" +
            "      { "category": "fiction",
" +
            "        "author": "Evelyn Waugh",
" +
            "        "title": "Sword of Honour",
" +
            "        "price": 12.99,
" +
            "        "isbn": "0-553-21311-3"
" +
            "      }
" +
            "    ],
" +
            "    "bicycle": {
" +
            "      "color": "red",
" +
            "      "price": 19.95
" +
            "    }
" +
            "  }
" +
            "}";

    public static void main(String[] args) {
        JSONObject json = JSON.parseObject(jsonStr);//调用自定义的jsonTest()方法获得json对象,生成上面的json

        //输出book[0]的author值
        String author = JsonPath.read(json, "$.store.book[0].author");
        System.out.println(author);
        List<String> authorList = JsonPath.read(json, "$.store.book[*].author");
        for(String authors:authorList){
            System.out.println(authors);
        }

    }
}

  测试结果

C:JAVASjdkinjava "-javaagent:C:Program FilesJetBrainsIntelliJ IDEA 2017.3.4libidea_rt.jar=19319:C:Program FilesJetBrainsIntelliJ IDEA 2017.3.4in" -Dfile.encoding=UTF-8 -classpath C:JAVASjdkjrelibcharsets.jar;C:JAVASjdkjrelibdeploy.jar;C:JAVASjdkjrelibextaccess-bridge-32.jar;C:JAVASjdkjrelibextcldrdata.jar;C:JAVASjdkjrelibextdnsns.jar;C:JAVASjdkjrelibextjaccess.jar;C:JAVASjdkjrelibextjfxrt.jar;C:JAVASjdkjrelibextlocaledata.jar;C:JAVASjdkjrelibext
ashorn.jar;C:JAVASjdkjrelibextsunec.jar;C:JAVASjdkjrelibextsunjce_provider.jar;C:JAVASjdkjrelibextsunmscapi.jar;C:JAVASjdkjrelibextsunpkcs11.jar;C:JAVASjdkjrelibextzipfs.jar;C:JAVASjdkjrelibjavaws.jar;C:JAVASjdkjrelibjce.jar;C:JAVASjdkjrelibjfr.jar;C:JAVASjdkjrelibjfxswt.jar;C:JAVASjdkjrelibjsse.jar;C:JAVASjdkjrelibmanagement-agent.jar;C:JAVASjdkjrelibplugin.jar;C:JAVASjdkjrelib
esources.jar;C:JAVASjdkjrelib
t.jar;C:Usersadmindiamond4java-lesson2lesson2-start	argetclasses;D:mvn_repositoryorgspringframeworkootspring-boot-starter-web1.5.6.RELEASEspring-boot-starter-web-1.5.6.RELEASE.jar;D:mvn_repositoryorgspringframeworkootspring-boot-starter-tomcat1.5.6.RELEASEspring-boot-starter-tomcat-1.5.6.RELEASE.jar;D:mvn_repositoryorgapache	omcatembed	omcat-embed-core8.5.16	omcat-embed-core-8.5.16.jar;D:mvn_repositoryorgapache	omcatembed	omcat-embed-el8.5.16	omcat-embed-el-8.5.16.jar;D:mvn_repositoryorgapache	omcatembed	omcat-embed-websocket8.5.16	omcat-embed-websocket-8.5.16.jar;D:mvn_repositoryorghibernatehibernate-validator5.3.5.Finalhibernate-validator-5.3.5.Final.jar;D:mvn_repositoryjavaxvalidationvalidation-api1.1.0.Finalvalidation-api-1.1.0.Final.jar;D:mvn_repositoryorgjbossloggingjboss-logging3.3.1.Finaljboss-logging-3.3.1.Final.jar;D:mvn_repositorycomfasterxmlclassmate1.3.3classmate-1.3.3.jar;D:mvn_repositorycomfasterxmljacksoncorejackson-databind2.8.9jackson-databind-2.8.9.jar;D:mvn_repositorycomfasterxmljacksoncorejackson-annotations2.8.0jackson-annotations-2.8.0.jar;D:mvn_repositorycomfasterxmljacksoncorejackson-core2.8.9jackson-core-2.8.9.jar;D:mvn_repositoryorgspringframeworkspring-web4.3.10.RELEASEspring-web-4.3.10.RELEASE.jar;D:mvn_repositoryorgspringframeworkspring-webmvc4.3.10.RELEASEspring-webmvc-4.3.10.RELEASE.jar;D:mvn_repositoryorgspringframeworkspring-expression4.3.10.RELEASEspring-expression-4.3.10.RELEASE.jar;D:mvn_repositoryorgspringframeworkootspring-boot-starter-aop1.5.6.RELEASEspring-boot-starter-aop-1.5.6.RELEASE.jar;D:mvn_repositoryorgspringframeworkspring-aop4.3.10.RELEASEspring-aop-4.3.10.RELEASE.jar;D:mvn_repositoryorgaspectjaspectjweaver1.8.10aspectjweaver-1.8.10.jar;D:mvn_repositoryorgspringframeworkootspring-boot-starter-mail1.5.6.RELEASEspring-boot-starter-mail-1.5.6.RELEASE.jar;D:mvn_repositoryorgspringframeworkspring-context4.3.10.RELEASEspring-context-4.3.10.RELEASE.jar;D:mvn_repositorycomsunmailjavax.mail1.5.6javax.mail-1.5.6.jar;D:mvn_repositoryjavaxactivationactivation1.1activation-1.1.jar;D:mvn_repositoryorgspringframeworkspring-test4.3.10.RELEASEspring-test-4.3.10.RELEASE.jar;D:mvn_repositoryjfreejfreechart1.0.13jfreechart-1.0.13.jar;D:mvn_repositoryjfreejcommon1.0.16jcommon-1.0.16.jar;D:mvn_repositorycomalibabaootdubbo-spring-boot-starter0.1.0dubbo-spring-boot-starter-0.1.0.jar;D:mvn_repositorycomalibabadubbo2.5.10dubbo-2.5.10.jar;D:mvn_repositoryorgjavassistjavassist3.21.0-GAjavassist-3.21.0-GA.jar;D:mvn_repositoryorgjboss
etty
etty3.2.5.Final
etty-3.2.5.Final.jar;D:mvn_repositoryorgapachezookeeperzookeeper3.4.9zookeeper-3.4.9.jar;D:mvn_repositorylog4jlog4j1.2.16log4j-1.2.16.jar;D:mvn_repositoryjlinejline0.9.94jline-0.9.94.jar;D:mvn_repositoryio
etty
etty3.10.5.Final
etty-3.10.5.Final.jar;D:mvn_repositoryorgapachecuratorcurator-framework2.12.0curator-framework-2.12.0.jar;D:mvn_repositoryorgapachecuratorcurator-client2.12.0curator-client-2.12.0.jar;D:mvn_repositorycomalibabaootdubbo-spring-boot-autoconfigure0.1.0dubbo-spring-boot-autoconfigure-0.1.0.jar;D:mvn_repositorycomalibabaootdubbo-spring-boot-actuator0.1.0dubbo-spring-boot-actuator-0.1.0.jar;D:mvn_repositorymysqlmysql-connector-java5.1.38mysql-connector-java-5.1.38.jar;D:mvn_repositorycomgoogleguavaguava22.0guava-22.0.jar;D:mvn_repositorycomgooglecodefindbugsjsr3051.3.9jsr305-1.3.9.jar;D:mvn_repositorycomgoogleerrorproneerror_prone_annotations2.0.18error_prone_annotations-2.0.18.jar;D:mvn_repositorycomgooglej2objcj2objc-annotations1.1j2objc-annotations-1.1.jar;D:mvn_repositoryorgcodehausmojoanimal-sniffer-annotations1.14animal-sniffer-annotations-1.14.jar;D:mvn_repositoryorgapachecommonscommons-lang33.5commons-lang3-3.5.jar;D:mvn_repositoryorgapachehttpcomponentshttpclient4.5.5httpclient-4.5.5.jar;D:mvn_repositoryorgapachehttpcomponentshttpcore4.4.6httpcore-4.4.6.jar;D:mvn_repositorycommons-loggingcommons-logging1.2commons-logging-1.2.jar;D:mvn_repositorycommons-codeccommons-codec1.10commons-codec-1.10.jar;D:mvn_repositorycommons-iocommons-io2.5commons-io-2.5.jar;D:mvn_repositorycomalibabafastjson1.2.47fastjson-1.2.47.jar;D:mvn_repositoryorgquartz-schedulerquartz2.2.1quartz-2.2.1.jar;D:mvn_repositoryc3p0c3p00.9.1.1c3p0-0.9.1.1.jar;D:mvn_repositoryorgslf4jslf4j-api1.7.25slf4j-api-1.7.25.jar;D:mvn_repositoryorgquartz-schedulerquartz-jobs2.2.1quartz-jobs-2.2.1.jar;D:mvn_repositorycomjaywayjsonpathjson-path2.2.0json-path-2.2.0.jar;D:mvn_repository
etminidevjson-smart2.2.1json-smart-2.2.1.jar;D:mvn_repository
etminidevaccessors-smart1.1accessors-smart-1.1.jar;D:mvn_repositoryorgow2asmasm5.0.3asm-5.0.3.jar;D:mvn_repositoryorgcodehausgroovygroovy-all2.1.6groovy-all-2.1.6.jar;D:mvn_repositoryorgprojectlomboklombok-maven-plugin1.16.18.1lombok-maven-plugin-1.16.18.1.jar;D:mvn_repositoryorgprojectlomboklombok1.16.18lombok-1.16.18.jar;D:mvn_repositoryorgsonatypeplexusplexus-build-api0.0.7plexus-build-api-0.0.7.jar;D:mvn_repositoryorgcodehausplexusplexus-utils1.5.8plexus-utils-1.5.8.jar;D:mvn_repositoryorgspringframeworkootspring-boot-configuration-processor1.5.6.RELEASEspring-boot-configuration-processor-1.5.6.RELEASE.jar;D:mvn_repositorycomvaadinexternalgoogleandroid-json0.0.20131108.vaadin1android-json-0.0.20131108.vaadin1.jar;D:mvn_repositoryorgjsoupjsoup1.9.2jsoup-1.9.2.jar;D:mvn_repositoryorgspringframeworkootspring-boot-starter-freemarker1.5.6.RELEASEspring-boot-starter-freemarker-1.5.6.RELEASE.jar;D:mvn_repositoryorgspringframeworkootspring-boot-starter1.5.6.RELEASEspring-boot-starter-1.5.6.RELEASE.jar;D:mvn_repositoryorgspringframeworkootspring-boot-starter-logging1.5.6.RELEASEspring-boot-starter-logging-1.5.6.RELEASE.jar;D:mvn_repositorychqoslogbacklogback-classic1.1.11logback-classic-1.1.11.jar;D:mvn_repositorychqoslogbacklogback-core1.1.11logback-core-1.1.11.jar;D:mvn_repositoryorgslf4jjcl-over-slf4j1.7.25jcl-over-slf4j-1.7.25.jar;D:mvn_repositoryorgslf4jjul-to-slf4j1.7.25jul-to-slf4j-1.7.25.jar;D:mvn_repositoryorgslf4jlog4j-over-slf4j1.7.25log4j-over-slf4j-1.7.25.jar;D:mvn_repositoryorgyamlsnakeyaml1.17snakeyaml-1.17.jar;D:mvn_repositoryorgfreemarkerfreemarker2.3.26-incubatingfreemarker-2.3.26-incubating.jar;D:mvn_repositoryorgspringframeworkspring-context-support4.3.10.RELEASEspring-context-support-4.3.10.RELEASE.jar;D:mvn_repositoryorgspringframeworkspring-beans4.3.10.RELEASEspring-beans-4.3.10.RELEASE.jar;D:mvn_repositoryorgapachepoipoi-ooxml3.17poi-ooxml-3.17.jar;D:mvn_repositoryorgapachepoipoi3.17poi-3.17.jar;D:mvn_repositoryorgapachecommonscommons-collections44.1commons-collections4-4.1.jar;D:mvn_repositoryorgapachepoipoi-ooxml-schemas3.17poi-ooxml-schemas-3.17.jar;D:mvn_repositoryorgapachexmlbeansxmlbeans2.6.0xmlbeans-2.6.0.jar;D:mvn_repositorystaxstax-api1.0.1stax-api-1.0.1.jar;D:mvn_repositorycomgithubvirtualdcurvesapi1.04curvesapi-1.04.jar;D:mvn_repositorycomsquareupokhttp3okhttp3.2.0okhttp-3.2.0.jar;D:mvn_repositorycomsquareupokiookio1.6.0okio-1.6.0.jar;D:mvn_repositoryorgspringframeworkspring-core4.3.10.RELEASEspring-core-4.3.10.RELEASE.jar;D:mvn_repositoryorgspringframeworkootspring-boot-devtools1.5.6.RELEASEspring-boot-devtools-1.5.6.RELEASE.jar;D:mvn_repositoryorgspringframeworkootspring-boot1.5.6.RELEASEspring-boot-1.5.6.RELEASE.jar;D:mvn_repositoryorgspringframeworkootspring-boot-autoconfigure1.5.6.RELEASEspring-boot-autoconfigure-1.5.6.RELEASE.jar com.longteng.lesson2.service.JsonPathTest
14:18:59.081 [main] DEBUG com.jayway.jsonpath.internal.path.CompiledPath - Evaluating path: $['store']['book'][0]['author']
Nigel Rees
14:18:59.096 [main] DEBUG com.jayway.jsonpath.internal.path.CompiledPath - Evaluating path: $['store']['book'][*]['author']
Nigel Rees
Evelyn Waugh

Process finished with exit code 0
原文地址:https://www.cnblogs.com/zhou-test/p/10101949.html