zoukankan      html  css  js  c++  java
  • JsonPath提取表达式

    Path Examples
    {
        "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
                },
                {
                    "category": "fiction",
                    "author": "Herman Melville",
                    "title": "Moby Dick",
                    "isbn": "0-553-21311-3",
                    "price": 8.99
                },
                {
                    "category": "fiction",
                    "author": "J. R. R. Tolkien",
                    "title": "The Lord of the Rings",
                    "isbn": "0-395-19395-8",
                    "price": 22.99
                }
            ],
            "bicycle": {
                "color": "red",
                "price": 19.95
            }
        },
        "expensive": 10
    }

    Operators

    OperatorDescription
    $ The root element to query. This starts all path expressions.
    @ The current node being processed by a filter predicate.
    * Wildcard. Available anywhere a name or numeric are required.
    .. Deep scan. Available anywhere a name is required.
    .<name> Dot-notated child
    ['<name>' (, '<name>')] Bracket-notated child or children
    [<number> (, <number>)] Array index or indexes
    [start:end] Array slice operator
    [?(<expression>)] Filter expression. Expression must evaluate to a boolean value.

    Functions

    FunctionDescriptionOutput
    min() Provides the min value of an array of numbers Double
    max() Provides the max value of an array of numbers Double
    avg() Provides the average value of an array of numbers Double
    stddev() Provides the standard deviation value of an array of numbers Double
    length() Provides the length of an array Integer
    sum() Provides the sum value of an array of numbers Double

    Filter Operators

    OperatorDescription
    == left is equal to right (note that 1 is not equal to '1')
    != left is not equal to right
    < left is less than right
    <= left is less or equal to right
    > left is greater than right
    >= left is greater than or equal to right
    =~ left matches regular expression [?(@.name =~ /foo.*?/i)]
    in left exists in right [?(@.size in ['S', 'M'])]
    nin left does not exists in right
    subsetof left is a subset of right [?(@.sizes subsetof ['S', 'M', 'L'])]
    anyof left has an intersection with right [?(@.sizes anyof ['M', 'L'])]
    noneof left has no intersection with right [?(@.sizes noneof ['M', 'L'])]
    size size of left (array or string) should match right
    empty left (array or string) should be empty

    Path Examples

    JsonPath Result
    $.store.book[*].author The authors of all books:
    [
       "Nigel Rees",
       "Evelyn Waugh",
       "Herman Melville",
       "J. R. R. Tolkien"
    ]
    $..author All authors:
    [
       "Nigel Rees",
       "Evelyn Waugh",
       "Herman Melville",
       "J. R. R. Tolkien"
    ]
    $.store.* All things, both books and bicycles:
    [
       [
          {
             "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
          },
          {
             "category" : "fiction",
             "author" : "Herman Melville",
             "title" : "Moby Dick",
             "isbn" : "0-553-21311-3",
             "price" : 8.99
          },
          {
             "category" : "fiction",
             "author" : "J. R. R. Tolkien",
             "title" : "The Lord of the Rings",
             "isbn" : "0-395-19395-8",
             "price" : 22.99
          }
       ],
       {
          "color" : "red",
          "price" : 19.95
       }
    ]
    $.store..price The price of everything:
    [
       8.95,
       12.99,
       8.99,
       22.99,
       19.95
    ]
    $..book[2] The third book:
    [
       {
          "category" : "fiction",
          "author" : "Herman Melville",
          "title" : "Moby Dick",
          "isbn" : "0-553-21311-3",
          "price" : 8.99
       }
    ]
    $..book[-2] The second to last book:
    [
       {
          "category" : "fiction",
          "author" : "Herman Melville",
          "title" : "Moby Dick",
          "isbn" : "0-553-21311-3",
          "price" : 8.99
       }
    ]
    $..book[0,1] The first two books
    $..book[:2] All books from index 0 (inclusive) until index 2 (exclusive)
    $..book[1:2] All books from index 1 (inclusive) until index 2 (exclusive)
    $..book[-2:] Last two books
    $..book[2:] Book number two from tail
    $..book[?(@.isbn)] All books with an ISBN number:
    [
       {
          "category" : "fiction",
          "author" : "Herman Melville",
          "title" : "Moby Dick",
          "isbn" : "0-553-21311-3",
          "price" : 8.99
       },
       {
          "category" : "fiction",
          "author" : "J. R. R. Tolkien",
          "title" : "The Lord of the Rings",
          "isbn" : "0-395-19395-8",
          "price" : 22.99
       }
    ]
    $.store.book[?(@.price < 10)] All books in store cheaper than 10:
    [
       {
          "category" : "reference",
          "author" : "Nigel Rees",
          "title" : "Sayings of the Century",
          "price" : 8.95
       },
       {
          "category" : "fiction",
          "author" : "Herman Melville",
          "title" : "Moby Dick",
          "isbn" : "0-553-21311-3",
          "price" : 8.99
       }
    ]
    $..book[?(@.price <= $['expensive'])] All books in store that are not "expensive":
    [
       {
          "category" : "reference",
          "author" : "Nigel Rees",
          "title" : "Sayings of the Century",
          "price" : 8.95
       },
       {
          "category" : "fiction",
          "author" : "Herman Melville",
          "title" : "Moby Dick",
          "isbn" : "0-553-21311-3",
          "price" : 8.99
       }
    ]
    $..book[?(@.author =~ /.*REES/i)] All books matching regex (ignore case):
    [
       {
          "category" : "reference",
          "author" : "Nigel Rees",
          "title" : "Sayings of the Century",
          "price" : 8.95
       }
    ]
    $..* Give me every thing
    $..book.length()

    The number of books



    path example:
    注:在jmeter 中使用时这里的 length()有时候并不太好用,可以用另外一种方法代替,如下图,要提取 rows 的长度,可用JSON/YAML Path Extractor 提取整个列表$.data.rows赋给变量 list_rows,查看Debug Sampler ,会返回一个 list_rows_matchNr 长度值,可以通过这个长度值进行比较或者取值

    三十六般武艺,七十二般变化,修练出个人品牌并发出光芒
  • 相关阅读:
    AVL树入门
    hdu 3709 Balanced Number
    跟着病毒学技术--学习WannaCry自己实现LoadLirbrary
    Win7下64位扫雷逆向以及辅助制作
    Qt使用.lib静态库和.dll动态库文件
    X64调用规范
    “热补丁”Hook,多线程下InlineHook解决方法
    x86 x64下调用约定浅析
    配置Sublime Text3编译汇编并高亮代码
    反调试技术(一)--静态反调试
  • 原文地址:https://www.cnblogs.com/deeptester-vv/p/13391188.html
Copyright © 2011-2022 走看看