JSONPath是fastjson在1.2.0之后支持的。JSONPath是一个很强大的功能。关于JSONPath的介绍请查看官方文档 JSONPath

官方文档上给出了详细的说明以及使用。但是官方文档没有具体的说明对于JSONPath在JSON数据中的使用,下面我来讲解一下JSONPath在JSON中的使用。

关于JSONPath在JSON中的使用,在1.2.3的时候,官方 support.odps 下面是有封装的;但是我下载的是1.2.7版本的,在1.2.7版本中在support包下面没有odps包,所以我下面的讲解是基于1.2.7版本的。

其实要在JSON数据中使用JSONPath很简单,只需要简单的一行代码:

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}}}";
//Object jsonObject = JSON.parse(jsonStr); // 先解析JSON数据
JSONObject jsonObject = JSON.parseObject(jsonStr);

如果是json格式的字符串,则先解析为JSONObject,然后就能直接使用JSONPath了。

System.out.println("\n Book数目:" + JSONPath.eval(jsonObject, "$.store.book.size()"));
System.out.println("第一本书title:" + JSONPath.eval(jsonObject, "$.store.book[0].title"));
System.out.println("price大于10元的book:" + JSONPath.eval(jsonObject, "$.store.book[price > 10]"));
System.out.println("price大于10元的title:" + JSONPath.eval(jsonObject, "$.store.book[price > 10][0].title"));
System.out.println("category(类别)为fiction(小说)的book:" + JSONPath.eval(jsonObject, "$.store.book[category = 'fiction']"));
System.out.println("bicycle的所有属性值" + JSONPath.eval(jsonObject, "$.store.bicycle.*"));
System.out.println("bicycle的color和price属性值" + JSONPath.eval(jsonObject, "$.store.bicycle['color','price']"));

输出结果:

 Book数目:2
第一本书title:Sayings of the Century
price大于10元的book:[{"author":"Evelyn Waugh","title":"Sword of Honour","category":"fiction","price":12.99,"isbn":"0-553-21311-3"}]
price大于10元的title:Sword of Honour
category(类别)为fiction(小说)的book:[{"author":"Evelyn Waugh","title":"Sword of Honour","category":"fiction","price":12.99,"isbn":"0-553-21311-3"}]
bicycle的所有属性值[19.95, red]
bicycle的color和price属性值[red, 19.95]

最新文章

  1. 我的基于asp.net mvc5 +mysql+dapper+easyui 的Web开发框架(0)
  2. python 聊天室
  3. App提交iTunes Connect,"二进制无效"问题解决方案。
  4. MySQL的热备percona-xtrabackup、innobackupex的安装方法
  5. Tips5:通过 alt+鼠标左键 来完全展开或收缩层级
  6. python数字图像处理(12):基本图形的绘制
  7. 【转】Android Paint之 setXfermode PorterDuffXfermode 讲解
  8. [ZJOI2006]物流运输
  9. Inno Setup for Windows service
  10. UISearchDisplayController UISearchBar
  11. Java List集合特有方法程序用法
  12. struts2 从一个action跳转到另一个action的struts.xml文件的配置
  13. 用户身份切换之初窥企业远程用户没root还有root权限
  14. suse11 安装 python3.6 python3 安装步骤
  15. ERROR 1045 (28000): Access denied for user 'mysql'@'localhost' (using password: YES
  16. Linux最大打开文件描述符数
  17. JavaScript中的数组与伪数组的区别
  18. Qml应用程序的性能考虑与建议
  19. StringUtils的工具类isBlank与isEmply
  20. HihoCoder1049 后序遍历 分治水题

热门文章

  1. gulp learning note
  2. URLs对象 blob URL
  3. HTML学习笔记 css定位浮动及瀑布流案例 第十三节 (原创) 参考使用表
  4. 图文详解linux/windows mysql忘记root密码解决方案
  5. padding-使用必记
  6. [转载] Kafka+Storm+HDFS整合实践
  7. web前端-----第一弹html
  8. MD5摘要算法简析
  9. python学习笔记 python实现k-means聚类
  10. centos7下部署Django(nginx+uwsgi+python3+django)