jsonpath 判断是否包含_JSONPath介绍

jsonpath 判断是否包含_JSONPath介绍/***@authoritguang*@create2017-12-1010:03**/@RunWith(SpringRunner.class)@SpringBootTest@Slf4jpublicclassJSONpathControllerTest{@Testpublicvoidtest(){Useruser=newUser(“itguang”,”123456″…

大家好,又见面了,我是你们的朋友全栈君。

jsonpath 判断是否包含_JSONPath介绍

/**

* @author itguang

* @create 2017-12-10 10:03

**/

@RunWith(SpringRunner.class)

@SpringBootTest

@Slf4j

public class JSONpathControllerTest {

@Test

public void test() {

User user = new User(“itguang”, “123456”, “123@qq.com”);

String username = (String) JSONPath.eval(user, “$.username”);

log.info(“$.username = {}”, username);

Entity entity = new Entity(123, user);

User user1 = (User) JSONPath.eval(entity, “$.value”);

log.info(“user={}”, user1.toString());

}

@Test

public void test2() {

User user = new User(“itguang”, “123456”, “123@qq.com”);

Entity entity = new Entity(123, user);

//判断entity中是否有 data

boolean contains = JSONPath.contains(entity, “$.data”);

Assert.assertTrue(contains);

//判断 entity.data.username 属性值是否为 itguang

boolean containsValue = JSONPath.containsValue(entity, “$.data.username”, “itguang”);

Assert.assertTrue(containsValue);

Assert.assertEquals(2, JSONPath.size(entity, “$”));

}

@Test

public void test3() {

List entities = new ArrayList();

entities.add(new Entity(“逻辑”));

entities.add(new Entity(“叶文杰”));

entities.add(new Entity(“程心”));

//返回集合中多个元素

List names = (List) JSONPath.eval(entities, “$.name”);

log.info(“返回集合中多个元素names={}”, names);

//返回下标 0 和 2 的元素

List result = (List) JSONPath.eval(entities, “[0,2]”);

log.info(“返回下标 0 和 2 的元素={}”, result);

// 返回下标从0到2的元素

List result2 = (List) JSONPath.eval(entities, “[0:2]”);

log.info(“返回下标从0到2的元素={}”, result2);

}

@Test

public void test4() {

List entities = new ArrayList();

entities.add(new Entity(1001, “逻辑”));

entities.add(new Entity(1002, “程心”));

entities.add(new Entity(1003, “叶文杰”));

entities.add(new Entity(1004, null));

//通过条件过滤,返回集合的子集

List result = (List) JSONPath.eval(entities, “[id in (1001)]”);

log.info(“通过条件过滤,返回集合的子集={}”, result);

}

/**

* 使用JSONPrase 解析JSON字符串或者Object对象

*

* read(String json, String path)//直接使用json字符串匹配

*

* eval(Object rootObject, String path) //直接使用 对象匹配

*

*

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

*/

@Test

public void test5() {

String jsonStr = “{\n” +

” \”store\”: {\n” +

” \”bicycle\”: {\n” +

” \”color\”: \”red\”,\n” +

” \”price\”: 19.95\n” +

” },\n” +

” \”book\”: [\n” +

” {\n” +

” \”author\”: \”刘慈欣\”,\n” +

” \”price\”: 8.95,\n” +

” \”category\”: \”科幻\”,\n” +

” \”title\”: \”三体\”\n” +

” },\n” +

” {\n” +

” \”author\”: \”itguang\”,\n” +

” \”price\”: 12.99,\n” +

” \”category\”: \”编程语言\”,\n” +

” \”title\”: \”go语言实战\”\n” +

” }\n” +

” ]\n” +

” }\n” +

“}”;

JSONObject jsonObject = JSON.parseObject(jsonStr);

log.info(jsonObject.toString());

//得到所有的书

List books = (List) JSONPath.eval(jsonObject, “$.store.book”);

log.info(“books={}”, books);

//得到所有的书名

List titles = (List) JSONPath.eval(jsonObject, “$.store.book.title”);

log.info(“titles={}”, titles);

//第一本书title

String title = (String) JSONPath.read(jsonStr, “$.store.book[0].title”);

log.info(“title={}”, title);

//price大于10元的book

List list = (List) JSONPath.read(jsonStr, “$.store.book[price > 10]”);

log.info(“price大于10元的book={}”,list);

//price大于10元的title

List list2 =(List) JSONPath.read(jsonStr, “$.store.book[price > 10].title”);

log.info(“price大于10元的title={}”,list2);

//category(类别)为科幻的book

List list3 = (List) JSONPath.read(jsonStr,”$.store.book[category = ‘科幻’]”);

log.info(“category(类别)为科幻的book={}”,list3);

//bicycle的所有属性值

Collection values = (Collection) JSONPath.eval(jsonObject, “$.store.bicycle.*”);

log.info(“bicycle的所有属性值={}”,values);

//bicycle的color和price属性值

List read =(List) JSONPath.read(jsonStr, “$.store.bicycle[‘color’,’price’]”);

log.info(“bicycle的color和price属性值={}”,read);

}

}

jsonpath 判断是否包含_JSONPath介绍

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/150519.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 程序员面临的困难和挑战_突破困境的故事

    程序员面临的困难和挑战_突破困境的故事偶然在网上看到这样一个故事:John和Bill一起到山中探险,忽然他们发现一只老虎正深情的望着他们,John撒腿就要跑,Bill却迅速的从背包里拿出一双跑鞋穿在脚上,John看到后气急败坏的对说Bill“你穿什么鞋也跑不过老虎的”Bill同情的看了他一眼,回答说“我干吗要和老虎比,我只要跑过你就够了。”大笑以后不免想起John的境遇是不是有点象中国的程序员呢?我个人习惯把软件从业人员分为初级程

    2022年10月11日
    4
  • prometheus监控日志告警_undo terminal monitor

    prometheus监控日志告警_undo terminal monitorkubernetes之prometheus监控第二篇-alertmanager监控告警:  在前期的博文中,我已经简单的介绍过了prometheus的安装,以及通过grafana来实施监控。这篇博文,我们更深入的介绍一下prometheus的监控。本篇博文主要分为以下几个知识点:1.使用prometheus监控ceph存储;2.学习简单的PromQL语言,在grafana里面根据业务自定…

    2022年10月3日
    4
  • JVM进阶(十一):JAVA G1收集器

    JVM进阶(十一):JAVA G1收集器JVM进阶(十一)——JAVAG1收集器  在前两篇博文中讲解了新生代和年老代的收集器,在本篇博文中介绍一个收集范围涵盖整个堆的收集器——G1收集器。先讲讲G1收集器的特点,他也是个多线程的收集器,能够充分利用多个CPU进行工作,收集方式也与CMS收集器类似,因此不会有太久的停顿。  虽然回收的范围是整个堆,但还是有分代回收的回收方式。在年轻代依然采用复制算法;年老代也同样采用“标记-清除

    2022年6月13日
    27
  • mysql opkg源_如何修改opkg源

    mysql opkg源_如何修改opkg源修改opkg源vimopkg.conf##对应路径替换为如下:src/gzopenwrt_corehttp://mirrors.ustc.edu.cn/lede/releases/18.06.4/targets/x86/64/packagessrc/gzopenwrt_basehttp://mirrors.ustc.edu.cn/lede/releases/18.06.4/packag…

    2022年6月9日
    55
  • 详解 ManualResetEvent(转)

    详解 ManualResetEvent(转)原文:http://www.cnblogs.com/li-peng/p/3291306.html今天详细说一下ManualResetEvent它可以通知一个或多个正在等待的线程已发生事件,允许线程通过发信号互相通信,来控制线程是否可心访问资源当一个线程开始一个活动(此活动必须完成后,其他线程才能开始)时,它调用Reset以将ManualResetEvent置于非终止状…

    2022年7月18日
    13
  • 更改nginx默认端口_nginx查看端口

    更改nginx默认端口_nginx查看端口1、进入nginx.conf文件2、修改listen后的默认端口号改为想改的端口号(如下图)3、设置防火墙允许通过修改的端口号1、firewall-cmd–zone=public–add-port=90/tcp–permanent2、firewall-cmd–reload3、firewall-cmd–query-port=90/tcp4、在基于CentOS或RHEL的Linux发行版中,您需要安装policycoreutils软件包并添加SELinux对N

    2025年10月7日
    7

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号