zoukankan      html  css  js  c++  java
  • 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
  • 相关阅读:
    mybatis中的#和$的区别
    error: 40
    SenseTime Ace Coder Challenge 暨 商汤在线编程挑战赛* B. 我觉得海星
    AtCoder Regular Contest 093 D
    AtCoder Regular Contest 092 D
    2018 蓝桥杯省赛 B 组模拟赛(五) 结果填空:藏宝图
    2018/3/22 美团在线笔试 编程题
    2018/3/22美团在线笔试
    2018 蓝桥杯省赛 B 组模拟赛(一)青出于蓝胜于蓝
    心情小记
  • 原文地址:https://www.cnblogs.com/zhou-test/p/10101949.html
Copyright © 2011-2022 走看看