首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >最小使用Jayway JsonPath

最小使用Jayway JsonPath
EN

Stack Overflow用户
提问于 2016-04-20 08:14:54
回答 1查看 1.4K关注 0票数 2

我试图从使用JsonPath的json中找到特定值的最小值。

给出如下json(摘自这里 )

代码语言:javascript
复制
   {
    "store": {
        "book": [{
            "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
        }]
    },
    "expensive": 10
  }

我正在设法找出所有书的最低价格。所以基本上我是在期待:

代码语言:javascript
复制
     min(8.99,22.99) = 8.99

通过查看jsonPath github页面中有关函数的示例,我尝试了下面的表达式,但它似乎不起作用。

代码语言:javascript
复制
         $..book[*].price.min()

但我得到了以下错误:

代码语言:javascript
复制
Aggregation function attempted to calculate value using empty array

我做错了什么吗?

做这种事的正确方法是什么?

编辑:您可以测试表达式 这里

EN

回答 1

Stack Overflow用户

发布于 2016-04-20 09:40:51

下面是在解决方案类中编写的解决方案..。

代码语言:javascript
复制
import java.util.ArrayList;
import com.google.gson.GsonBuilder;

public class Solution {

public static void main(String[] args) {
    //building your object
    SolutionTo objSolutionTo = new SolutionTo();
    StoreTO objStoreTO = new StoreTO();
    ArrayList<BookTo> objArrayList = new ArrayList<BookTo>();
    BookTo objBookTo = new BookTo();
    objBookTo.setAuthor("Herman Melville");
    objBookTo.setCategory("fiction");
    objBookTo.setTitle("Moby Dick");
    objBookTo.setIsbn("0-553-21311-3");
    objBookTo.setPrice(8.99);
    BookTo objBookTo2 = new BookTo();
    objBookTo2.setAuthor("J. R. R. Tolkien");
    objBookTo2.setCategory("fiction");
    objBookTo2.setTitle("The Lord of the Rings");
    objBookTo2.setIsbn("0-553-21311-3");
    objBookTo2.setPrice(22.99);
    objArrayList.add(objBookTo);
    objArrayList.add(objBookTo2);
    objStoreTO.setBook(objArrayList);
    objSolutionTo.setStore(objStoreTO);
    objSolutionTo.setExpensive(10.0);
    System.out.println(new GsonBuilder().serializeNulls().setPrettyPrinting().create().toJson(objSolutionTo));


    //The logic you require to find the min value of price
    Double minPrice = Double.MAX_VALUE;
    for (BookTo bookTo : objSolutionTo.getStore().getBook()) {
        if (minPrice > bookTo.getPrice())
            minPrice = bookTo.getPrice();
    }
    System.out.println(minPrice);
}

}

以下是solutionTO类:

代码语言:javascript
复制
public class SolutionTo {
private StoreTO store;
private Double expensive;

public StoreTO getStore() {
    return store;
}

public void setStore(StoreTO store) {
    this.store = store;
}

public Double getExpensive() {
    return expensive;
}

public void setExpensive(Double expensive) {
    this.expensive = expensive;
}

}

以下是StoreTo类:

代码语言:javascript
复制
import java.util.ArrayList;

public class StoreTO {
private ArrayList<BookTo> book;

public ArrayList<BookTo> getBook() {
    return book;
}

public void setBook(ArrayList<BookTo> book) {
    this.book = book;
}

}

以下是bookTo对象:

代码语言:javascript
复制
public class BookTo {
private String category;
private String author;
private String title;
private String isbn;
private Double price;

public String getCategory() {
    return category;
}

public void setCategory(String category) {
    this.category = category;
}

public String getAuthor() {
    return author;
}

public void setAuthor(String author) {
    this.author = author;
}

public String getTitle() {
    return title;
}

public void setTitle(String title) {
    this.title = title;
}

public String getIsbn() {
    return isbn;
}

public void setIsbn(String isbn) {
    this.isbn = isbn;
}

public Double getPrice() {
    return price;
}

public void setPrice(Double price) {
    this.price = price;
}
}

在解决方案类中运行main方法,您将找到您想要的.

乐于助人。:)

票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36737741

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档