首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >JsonPath实践(二)

JsonPath实践(二)

作者头像
FunTester
发布2020-08-19 15:09:36
发布2020-08-19 15:09:36
6600
举报
文章被收录于专栏:FunTesterFunTester

本期接一下如何使用JSonpath标记语法处理,json对象中的数组主要内容是提取数组中对象和对象集合。

json数据

首先看官方给的json数据的Demo(我做了一点点修改):

代码语言:javascript
复制
JSONObject json = JSON.parseObject("{" +
                "    \"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," +
                "    \"ss\": [32,32,4,23]" +
                "}");

获取数组中的有序对象

jsonpath$.store.book[2]

  • 这里注意索引是从0开始的。

jsonpath$.store.book[-1]

  • 这里表示倒数第一个对象

代码:

代码语言:javascript
复制
        Object read = JsonPath.read(json, "$.store.book[2]");
        output(JSON.parseObject(read.toString()));

等效写法:

代码语言:javascript
复制
        JSONObject read = JsonPath.read(json, "$.store.book[2]");
        output(read);

控制台输出:

代码语言:javascript
复制
INFO-> 当前用户:fv,IP:10.60.131.54,工作目录:/Users/fv/Documents/workspace/fun/,系统编码格式:UTF-8,系统Mac OS X版本:10.15.6
INFO-> 
~☢~~☢~~☢~~☢~~☢~~☢~~☢~~☢~~☢~~☢~ JSON ~☢~~☢~~☢~~☢~~☢~~☢~~☢~~☢~~☢~~☢~
>  {
>  ① . "author":"Herman Melville",
>  ① . "price":8.99,
>  ① . "isbn":"0-553-21311-3",
>  ① . "category":"fiction",
>  ① . "title":"Moby Dick"
>  }
~☢~~☢~~☢~~☢~~☢~~☢~~☢~~☢~~☢~~☢~ JSON ~☢~~☢~~☢~~☢~~☢~~☢~~☢~~☢~~☢~~☢~

Process finished with exit code 0

获取数组中的有序对象切片

  • 这里的语法类似于Python中对于数组的处理。

jsonpath$.store.book[:2]

  • 倒数截取

jsonpath$.store.book[-2:]

代码:

代码语言:javascript
复制
        Object read = JsonPath.read(json, "$.store.book[2]");
        output(JSON.parseObject(read.toString()));

等效写法省略……

控制台输出:

代码语言:javascript
复制
INFO-> 当前用户:fv,IP:10.60.192.21,工作目录:/Users/fv/Documents/workspace/fun/,系统编码格式:UTF-8,系统Mac OS X版本:10.15.6
INFO-> 
~☢~~☢~~☢~~☢~~☢~~☢~~☢~~☢~~☢~~☢~ JSON ~☢~~☢~~☢~~☢~~☢~~☢~~☢~~☢~~☢~~☢~
>  {
>  ① . "author":"Nigel Rees",
>  ① . "price":8.95,
>  ① . "category":"reference",
>  ① . "title":"Sayings of the Century"
>  }
~☢~~☢~~☢~~☢~~☢~~☢~~☢~~☢~~☢~~☢~ JSON ~☢~~☢~~☢~~☢~~☢~~☢~~☢~~☢~~☢~~☢~
INFO-> 
~☢~~☢~~☢~~☢~~☢~~☢~~☢~~☢~~☢~~☢~ JSON ~☢~~☢~~☢~~☢~~☢~~☢~~☢~~☢~~☢~~☢~
>  {
>  ① . "author":"Evelyn Waugh",
>  ① . "price":12.99,
>  ① . "category":"fiction",
>  ① . "title":"Sword of Honour"
>  }
~☢~~☢~~☢~~☢~~☢~~☢~~☢~~☢~~☢~~☢~ JSON ~☢~~☢~~☢~~☢~~☢~~☢~~☢~~☢~~☢~~☢~

Process finished with exit code 0

  • 倒数截取
代码语言:javascript
复制

INFO-> 当前用户:fv,IP:10.60.192.21,工作目录:/Users/fv/Documents/workspace/fun/,系统编码格式:UTF-8,系统Mac OS X版本:10.15.6
INFO-> 
~☢~~☢~~☢~~☢~~☢~~☢~~☢~~☢~~☢~~☢~ JSON ~☢~~☢~~☢~~☢~~☢~~☢~~☢~~☢~~☢~~☢~
>  {
>  ① . "author":"Herman Melville",
>  ① . "price":8.99,
>  ① . "isbn":"0-553-21311-3",
>  ① . "category":"fiction",
>  ① . "title":"Moby Dick"
>  }
~☢~~☢~~☢~~☢~~☢~~☢~~☢~~☢~~☢~~☢~ JSON ~☢~~☢~~☢~~☢~~☢~~☢~~☢~~☢~~☢~~☢~
INFO-> 
~☢~~☢~~☢~~☢~~☢~~☢~~☢~~☢~~☢~~☢~ JSON ~☢~~☢~~☢~~☢~~☢~~☢~~☢~~☢~~☢~~☢~
>  {
>  ① . "author":"J. R. R. Tolkien",
>  ① . "price":22.99,
>  ① . "isbn":"0-395-19395-8",
>  ① . "category":"fiction",
>  ① . "title":"The Lord of the Rings"
>  }
~☢~~☢~~☢~~☢~~☢~~☢~~☢~~☢~~☢~~☢~ JSON ~☢~~☢~~☢~~☢~~☢~~☢~~☢~~☢~~☢~~☢~

Process finished with exit code 0

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2020-08-14,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 FunTester 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • json数据
  • 获取数组中的有序对象
  • 获取数组中的有序对象切片
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档