Java整合Jsonpath解析Json字符串
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字符串相关推荐
- java json path_Java使用JSONPath解析JSON完整内容详解
JsonPath是一种简单的方法来提取给定JSON文档的部分内容. JsonPath有许多编程语言,如Javascript,Python和PHP,Java. JsonPath提供的json解析非常强大 ...
- Java解析json字符串和json数组
Java解析json字符串和json数组 public static Map<String, String> getUploadTransactions(String json){Map& ...
- java中gso是什么意思_Java中用Gson解析json字符串
本文最后更新于2019年9月13日,已超过 1 年没有更新,如果文章内容失效,还请反馈给我,谢谢! =Start= 缘由: 因为阿里开源的fastjson前段时间爆出的漏洞实在是太多了(而且有些漏洞他 ...
- java 嵌套对象转xml_Gson对Java嵌套对象和JSON字符串之间的转换 | 学步园
JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式,具有良好的跨平台特性.近几年来已经和XML一样成为C/S架构中广泛采用的数据格式.有关JSON的更多知识, ...
- Java构造和解析Json数据的两种方法详解一
在www.json.org上公布了很多JAVA下的json构造和解析工具,其中org.json和json-lib比较简单,两者使用上差不多但还是有些区别.下面首先介绍用json-lib构造和解析Jso ...
- cjson构建_[置顶] cJSON库(构建json与解析json字符串)-c语言
一.c语言获取json中的数据. 1.先要有cJOSN库,两个文件分别是cJSON.c和cJSON.h. 2.感性认识 char * json = "{ \"json\" ...
- C#解析JSON字符串总结
C#解析JSON字符串总结 JSON文件读取到内存中就是字符串,.NET操作JSON就是生成与解析JSON字符串. 操作JSON通常有以下几种方式: 1. 原始方式:按照JSON字符串自己来解析. 2 ...
- c#解析json字符串处理清晰易懂的方法
JSON文件读取到内存中就是字符串,.NET操作JSON就是生成与解析JSON字符串. 操作JSON通常有以下几种方式: 1. 原始方式:按照JSON字符串自己来解析. 2. 通用方式[★★★★★]: ...
- qt中解析json字符串的时候出现错误missingNameSeperator
概述 当解析json字符串,编译代码的时候没有问题,但是当程序调式运行到解析json字符串的时候,即这句: QJsonParseError parseError;QJsonDocument doc = ...
最新文章
- 关于System.TypeInitializationException异常
- python中是干嘛的-python是做什么的,新手必看哦!
- 半潜式平台及其动力定位系统
- Tomcat 在mac上(Idea)端口冲突解决办法
- C#中引用第三方ocx控件引发的问题以及解决办法
- SQL事务处理实验报告
- python max函数时间复杂度_程序员的思考:用函数还是用复杂表达式
- 〔转〕Word域的应用和详解2_等式和公式域
- 如何启用计算机的无线功能键在哪,笔记本怎么打开wifi_如何开启笔记本电脑上的WiFi开关-win7之家...
- Unity 多点触控 禁用与启用
- 光场相机微透镜阵列排布方式以及其填充率比较
- 带有Arduino的WS2812B可寻址RGB LED灯条指南
- AntV G6 自定义节点图形
- Ubuntu中恢复rm命令误删文件(转)
- 在线图片转文字怎么操作?
- 解决viewer.js预览PDF文件 无法展示PDF水印的问题
- Win10 下安装Mathtype6.9 + office2013+EndNote-x8
- python网课一般多少钱-Python人工智能速成班泛滥 线上网课一个月2千
- 最近的大哥(单调栈)
- C#编辑、打印Excel文件不依赖Office