json-path解析json方便可靠
JsonPath is to JSON what XPATH is to XML, a simple way to extract parts of a given document. JsonPath is available in many programming languages such as Javascript, Python and PHP. Now also in Java!
News
2013
-
09
-
27
Released
0.9
.
0
bug fixes, general improvements
2012
-
04
-
16
Released
0.8
.
1
bug fixes, improved docs, general improvements
2012
-
03
-
08
Released
0.8
.
0
bug fixes, Filter builder, Json model, POJO mapping (optional) and compliance improvements.
2012
-
02
-
09
Released
0.5
.
6
including bug fixes and performance improvements.
Given
{
"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
}
}
}
Read
All authors:
List<String> authors = JsonPath.read(json,
"$.store.book[*].author"
);
Author of first book in store:
String author = JsonPath.read(json,
"$.store.book[1].author"
);
All books with category =
"reference"
List<Object> books = JsonPath.read(json,
"$.store.book[?(@.category == 'reference')]"
);
List<Object> books = JsonPath.read(json,
"$.store.book[?]"
, filter(where(
"category"
).is(
"reference"
)));
All books that cost more than
10
USD
List<Object> books = JsonPath.read(json,
"$.store.book[?(@.price > 10)]"
);
List<Object> books = JsonPath.read(json,
"$.store.book[?]"
, filter(where(
"price"
).gt(
10
)));
All books that have isbn
List<Object> books = JsonPath.read(json,
"$.store.book[?(@.isbn)]"
);
List<Object> books = JsonPath.read(json,
"$.store.book[?]"
, filter(where(
"isbn"
).exists(
true
)));
Chained filters
Filter filter = Filter.filter(Criteria.where(
"isbn"
).exists(
true
).and(
"category"
).in(
"fiction"
,
"reference"
))
List<Object> books = JsonPath.read(json,
"$.store.book[?]"
, filter);
Custom filters
Filter myFilter =
new
Filter.FilterAdapter<Map<String, Object>>(){
@Override
public
boolean
accept(Map<String, Object> map) {
return
map.containsKey(
"isbn"
);
}
};
List<Object> books = JsonPath.read(json,
"$.store.book[?]"
, myFilter);
All prices in the document
List<Double> prices = JsonPath.read(json,
"$..price"
);
Compiled path
You can pre compile a path and use it multiple times
JsonPath path = JsonPath.compile(
"$.store.book[*]"
);
List<Object> books = path.read(json);
Assert
Asserts are made with Hamcrest matchers
JsonAssert.with(json).assertThat(
"$.store.bicycle.color"
, Matchers.equalTo(
"red"
))
.assertThat(
"$.store.bicycle.price"
, Matchers.equalTo(
19
.95D));
Add some
static
imports and you get
this
with(json).assertThat(
"$.store.bicycle.color"
, equalTo(
"red"
))
.assertThat(
"$.store.bicycle.price"
, equalTo(
19
.95D));
The Hamcrest library contains a lot of different matchers and they can often be nested.
with(json).assertThat(
"$..author"
, hasItems(
"Nigel Rees"
,
"Evelyn Waugh"
))
.assertThat(
"$..author"
, is(collectionWithSize(equalTo(
2
))));
with(json).assertThat(
"$.store.book[?(@.category == 'x')]"
, emptyCollection());
If you don't find the matcher you need, roll your own.
Download
Json-path is available at Maven Central
<dependency>
<groupId>com.jayway.jsonpath</groupId>
<artifactId>json-path</artifactId>
<version>
0.9
.
1
</version>
</dependency>
<dependency>
<groupId>com.jayway.jsonpath</groupId>
<artifactId>json-path-
assert
</artifactId>
<version>
0.9
.
1
</version>
<scope>test</scope>
</dependency>
json-path解析json方便可靠的更多相关文章
- JMeter 插件 Json Path 解析 HTTP 响应 JSON 数据(转)
JMeter 是一个不错的负载和性能测试工具,我们也用来做 HTTP API 接口测试.我们的 API 返回结果为 JSON 数据格式.JSON 简介,JSON 教程. JSON 已经成为数据交换格式 ...
- JSON.stringify()方法是将一个javascript值(对象或者数组)转换成为一个JSON字符串;JSON.parse()解析JSON字符串,构造由字符串描述的javascript值或对象
JSON.stringify()方法是将一个javascript值(对象或者数组)转换成为一个JSON字符串:JSON.parse()解析JSON字符串,构造由字符串描述的javascript值或对象
- Python | JSON 数据解析(Json & JsonPath)
一.什么是JSON? JSON(JavaScript Object Notation, JS 对象简谱) 是一种轻量级的数据交换格式.它基于 ECMAScript (欧洲计算机协会制定的js规范)的一 ...
- JMeter 插件 Json Path 解析HTTP响应JSON数据
一.基本简介 JMeter 是一个不错的负载和性能测试工具,我们也用来做 HTTP API 接口测试.我们的 API 返回结果为JSON数据格式.JSON 简介,JSON 教程. JSON 已经成为数 ...
- SQL FOR JSON PATH 返回 json
--直接返回 age FOR JSON PATH --返回值 [{"name":"张学友","age":60}] select c1, c2 ...
- Python3基础 json.loads 解析json格式的数据,得到一个字典
Python : 3.7.0 OS : Ubuntu 18.04.1 LTS IDE : PyCharm 2018.2.4 Conda ...
- JSON.parse 解析json字符串时,遇换行符报错
Json字符串转换成Json对象时候,有两种方式: 假设d是json字符串: 1,eval('(' + d + ')'). 2,JSON.parse(d): 但是以上方式有隐患,如果Json字符串有换 ...
- C#使用Json.NET解析Json
本文转载自 http://xiaosheng.me/2016/10/01/article25/ 最近在 C# 项目中需要使用到 Json 格式的数据,我简单上网搜索了一下,基本上有两种操作 Json ...
- Android原生生成JSON与解析JSON
JSON数据是一种轻量级的数据交换格式,在Android中通常应用于client与server交互之间的传输数据.像如今在网上有非常多解析JSON数据的jar包,可是归根究竟用的都是Android原生 ...
- scala解析json —— json4s 解析json方法汇总
使用json4s的框架,包括spark,flink 1.org.json4s 引入pom的方法 对于本地支持,引入以下依赖项添加到pom中 <dependency> <groupId ...
随机推荐
- [oldboy-django][6其他]学习django网站推荐
http://www.cnblogs.com/holbrook/archive/2012/02/19/2358704.html alex: http://www.cnblogs.com/alex371 ...
- caffe-dnnh实验
下面是我在做基于深度哈希的大规模图像检索中的一个实验,相关文档介绍给大家,具体内容查看提供的相关链接,总结的很到位了,我就不再赘述. 实践cvpr2015年的深度哈希图像检索论文:Simultaneo ...
- Redis实现缓存,你应该懂的哪些思路!
场景一:类似于微博,实现关注和被关注功能. 思路: 对每个用户使用两个集合类型键,用来存储关注别人的用户和被该用户关注的用户.当用户A关注用户B的时候,执行两步操作: sadd user:A B sa ...
- Origin 2018 的坐标轴中文标签发生倒立/翻转
问题: 在使用 origin 2018 作图时,坐标轴或者是标签中输入中文后,将其更换中文字体(英文字体没有该问题)后发生倒立的情况 解决: 后来发现 Origin 2018 中存在两种中文字体,其中 ...
- Databus架构分析与初步实践
简介 Databus是一个低延迟.可靠的.支持事务的.保持一致性的数据变更抓取系统.由LinkedIn于2013年开源.Databus通过挖掘数据库日志的方式,将数据库变更实时.可靠的从数据库拉取出来 ...
- HTML 删除和添加字
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title> ...
- 洛谷 [P2341] 受欢迎的牛
强连通分量 一个结论: 在有向图中, 一个联通块能被所有点遍历当且仅当图中只有一个连通块出度为零 #include <iostream> #include <cstdio> # ...
- Java数据结构-------Map
常用Map:Hashtable.HashMap.LinkedHashMap.TreeMap 类继承关系: HashMap 1)无序: 2)访问速度快: 3)key不允许重复(只允许存在一个null ...
- 收藏一下这个微软MVP的老外博客
原文发布时间为:2011-04-20 -- 来源于本人的百度文章 [由搬家工具导入] http://blog.overridethis.com/blog http://haacked.com htt ...
- 倒计时浏览器跳转JavaScript
原文发布时间为:2008-10-11 -- 来源于本人的百度文章 [由搬家工具导入] <html> <head> <title>显示时间</title> ...