JsonPath是一种简单的方法来提取给定JSON文档的部分内容

引入依赖

    <dependency><groupId>com.jayway.jsonpath</groupId><artifactId>json-path</artifactId><version>2.5.0</version></dependency>

编写配置文件

import com.jayway.jsonpath.Option;
import com.jayway.jsonpath.spi.json.JacksonJsonProvider;
import com.jayway.jsonpath.spi.json.JsonProvider;
import com.jayway.jsonpath.spi.mapper.JacksonMappingProvider;
import com.jayway.jsonpath.spi.mapper.MappingProvider;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;import java.util.EnumSet;
import java.util.Set;/*** @author Curtain*/
@Configuration
public class JsonPathConfig {@Beanpublic com.jayway.jsonpath.Configuration jsonPathConfiguration() {com.jayway.jsonpath.Configuration.setDefaults(new com.jayway.jsonpath.Configuration.Defaults() {private final JsonProvider jsonProvider = new JacksonJsonProvider();private final MappingProvider mappingProvider = new JacksonMappingProvider();@Overridepublic JsonProvider jsonProvider() {return jsonProvider;}@Overridepublic MappingProvider mappingProvider() {return mappingProvider;}@Overridepublic Set<Option> options() {return EnumSet.noneOf(Option.class);}});return com.jayway.jsonpath.Configuration.defaultConfiguration();}}

解析示例

假设字符串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},{"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
}

java解析

ReadContext context = JsonPath.parse(jsonStr);
//获取json字符串中expensive的值
Integer code = context.read("$.expensive", Integer.class);
//获取json字符串中bicycle对象
Bicycle bicycle = context.read("$.store.bicycle", Bicycle.class);
//获取json字符串中book数组
List<Book> adjacentIntersections = context.read("$.store.book",new TypeRef<List<Book>>() {});

更多语法

ps:语法里面的三个点全部改成两个点(csdn markdown的问题)

JsonPath 结果
$.store.book[*].author 获取json中store下book下的所有author值
$…author 获取所有json中所有author的值
$.store.* 所有的东西,书籍和自行车
$.store…price 获取json中store下所有price的值
$…book[2] 获取json中book数组的第3个值
$…book[-2] 倒数的第二本书
$…book[0,1] 前两本书
$…book[:2] 从索引0(包括)到索引2(排除)的所有图书
$…book[1:2] 从索引1(包括)到索引2(排除)的所有图书
$…book[-2:] 获取json中book数组的最后两个值
$…book[2:] 获取json中book数组的第3个到最后一个的区间值
$…book[?(@.isbn)] 获取json中book数组中包含isbn的所有值
$.store.book[?(@.price < 10)] 获取json中book数组中price<10的所有值
$…book[?(@.price <= $[‘expensive’])] 获取json中book数组中price<=expensive的所有值
$…book[?(@.author =~ /.*REES/i)] 获取json中book数组中的作者以REES结尾的所有值(REES不区分大小写)
$…* 获取json中book数组的最后两个值
$…book[-2:] 逐层列出json中的所有值,层级由外到内
$…book.length() 获取json中book数组的长度

测试地址

https://jsonpath.com/

有些语法可能这个网站有验证不出来,可能是版本的问题。

Java整合Jsonpath解析Json字符串相关推荐

  1. java json path_Java使用JSONPath解析JSON完整内容详解

    JsonPath是一种简单的方法来提取给定JSON文档的部分内容. JsonPath有许多编程语言,如Javascript,Python和PHP,Java. JsonPath提供的json解析非常强大 ...

  2. Java解析json字符串和json数组

    Java解析json字符串和json数组 public static Map<String, String> getUploadTransactions(String json){Map& ...

  3. java中gso是什么意思_Java中用Gson解析json字符串

    本文最后更新于2019年9月13日,已超过 1 年没有更新,如果文章内容失效,还请反馈给我,谢谢! =Start= 缘由: 因为阿里开源的fastjson前段时间爆出的漏洞实在是太多了(而且有些漏洞他 ...

  4. java 嵌套对象转xml_Gson对Java嵌套对象和JSON字符串之间的转换 | 学步园

    JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式,具有良好的跨平台特性.近几年来已经和XML一样成为C/S架构中广泛采用的数据格式.有关JSON的更多知识, ...

  5. Java构造和解析Json数据的两种方法详解一

    在www.json.org上公布了很多JAVA下的json构造和解析工具,其中org.json和json-lib比较简单,两者使用上差不多但还是有些区别.下面首先介绍用json-lib构造和解析Jso ...

  6. cjson构建_[置顶] cJSON库(构建json与解析json字符串)-c语言

    一.c语言获取json中的数据. 1.先要有cJOSN库,两个文件分别是cJSON.c和cJSON.h. 2.感性认识 char * json = "{ \"json\" ...

  7. C#解析JSON字符串总结

    C#解析JSON字符串总结 JSON文件读取到内存中就是字符串,.NET操作JSON就是生成与解析JSON字符串. 操作JSON通常有以下几种方式: 1. 原始方式:按照JSON字符串自己来解析. 2 ...

  8. c#解析json字符串处理清晰易懂的方法

    JSON文件读取到内存中就是字符串,.NET操作JSON就是生成与解析JSON字符串. 操作JSON通常有以下几种方式: 1. 原始方式:按照JSON字符串自己来解析. 2. 通用方式[★★★★★]: ...

  9. qt中解析json字符串的时候出现错误missingNameSeperator

    概述 当解析json字符串,编译代码的时候没有问题,但是当程序调式运行到解析json字符串的时候,即这句: QJsonParseError parseError;QJsonDocument doc = ...

最新文章

  1. 关于System.TypeInitializationException异常
  2. python中是干嘛的-python是做什么的,新手必看哦!
  3. 半潜式平台及其动力定位系统
  4. Tomcat 在mac上(Idea)端口冲突解决办法
  5. C#中引用第三方ocx控件引发的问题以及解决办法
  6. SQL事务处理实验报告
  7. python max函数时间复杂度_程序员的思考:用函数还是用复杂表达式
  8. 〔转〕Word域的应用和详解2_等式和公式域
  9. 如何启用计算机的无线功能键在哪,笔记本怎么打开wifi_如何开启笔记本电脑上的WiFi开关-win7之家...
  10. Unity 多点触控 禁用与启用
  11. 光场相机微透镜阵列排布方式以及其填充率比较
  12. 带有Arduino的WS2812B可寻址RGB LED灯条指南
  13. AntV G6 自定义节点图形
  14. Ubuntu中恢复rm命令误删文件(转)
  15. 在线图片转文字怎么操作?
  16. 解决viewer.js预览PDF文件 无法展示PDF水印的问题
  17. Win10 下安装Mathtype6.9 + office2013+EndNote-x8
  18. python网课一般多少钱-Python人工智能速成班泛滥 线上网课一个月2千
  19. 最近的大哥(单调栈)
  20. C#编辑、打印Excel文件不依赖Office

热门文章

  1. 论文阅读《Expert Training Task Hardness Aware Meta-Learning for Few-Shot Classification》
  2. MySQL知识点整理汇总
  3. 常见apn类型说明及配置
  4. 经济学原理上中国故事2019尔雅满分答案
  5. 苹果手机怎么在照片上添加文字_手机美图秀秀怎么给图片添加文字
  6. 面试时如何做好5分钟自我介绍?
  7. 微信第三方平台开发流程
  8. 微信公众号网页 H5 video 标签自动播放
  9. 计算机DNS怎么配置,如何设置计算机dns?电脑dns设置教程
  10. 如何通俗易懂地阐述机器学习?