我有一个像bellow的json数组:
{
"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,
"likes": 1
},
{
"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}
我试图找到没有喜欢字段的所有书籍价格。是否可以使用Jayway Json Path library查找。我正在尝试类似$.store.book[? (@.likes == null)].price
的方法,但我不知道是否存在类似的方法?
参考方案
这个jsonpath表达式是正确的:
$.store.book[?(@.likes == null)].price
但是您必须设置DEFAULT_PATH_LEAF_TO_NULL
,例如:
Configuration conf = Configuration.defaultConfiguration()
.addOptions(Option.DEFAULT_PATH_LEAF_TO_NULL);
String pricesForBooksWithNoLikes = JsonPath.using(conf).parse(json)
.read("$.store.book[?(@.likes == null)].price");
更多详细信息in the docs。
这是一个屏幕截图,显示了使用Jayway JsonPath Evaluator的这种读取方式:
Java Map,如何将UTF-8字符串正确放置到地图? - java我有一个地图,LinkedHashMap更确切地说。我想在上面放一个字符串对象。然后,我读取此值以查看实际存储的内容。字符串本身具有非ASCII字符(西里尔文,韩文等)。将其放到地图上然后阅读后,这些字符将替换为??? s。一些代码:Map obj = new LinkedHashMap(); System.out.println("name: &…
使用杰克逊映射未命名的数组 - java在未指定游标的情况下点击twitter friends/ids API端点将返回以下JSON响应:["243439460","13334762", "14654522"]但是,在指定游标时,您会得到记录的格式:{"next_cursor":0,"previous_cur…
如何将JSON读取到Java中的通用对象列表? - java我必须从Web服务获取数据,我正在使用Jackson,但在使用Gson时遇到了同样的问题,单个对象没有问题,但是当我收到多个对象列表时,这对我来说并不那么容易。收到的JSON如下所示:{"country": [ {"code":"AD","nombre":"Andorr…
使用Jackson将JSON字符串或对象反序列化为String字段 - java我正在使用Jackson 2库,并且尝试读取JSON响应,如下所示:{ "value":"Hello" } 当value为空时,JSON响应如下所示:{ "value":{} } 我的模型POJO类看起来像这样public class Hello { private String value; pu…
Java Double与BigDecimal - java我正在查看一些使用双精度变量来存储(360-359.9998779296875)结果为0.0001220703125的代码。 double变量将其存储为-1.220703125E-4。当我使用BigDecimal时,其存储为0.0001220703125。为什么将它双重存储为-1.220703125E-4? 参考方案 我不会在这里提及精度问题,而只会提及数字…