溫馨提示×

jsonpath java 怎樣處理復雜查詢

小樊
110
2024-11-27 03:10:40
欄目: 編程語言

在Java中,使用JsonPath庫處理復雜查詢非常簡單。首先,你需要將JsonPath庫添加到項目的依賴中。如果你使用的是Maven,可以在pom.xml文件中添加以下依賴:

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

接下來,你可以使用以下代碼示例來處理復雜查詢:

import com.jayway.jsonpath.DocumentContext;
import com.jayway.jsonpath.JsonPath;
import org.junit.Test;

import java.io.IOException;
import java.util.Map;

import static com.jayway.jsonpath.JsonPath.read;

public class JsonPathComplexQueryTest {

    @Test
    public void complexQueryTest() throws IOException {
        String json = "{\n" +
                "  \"store\": {\n" +
                "    \"book\": [\n" +
                "      {\"category\": \"reference\", \"author\": \"Nigel Rees\", \"title\": \"Sayings of the Century\", \"price\": 8.95},\n" +
                "      {\"category\": \"fiction\", \"author\": \"Evelyn Waugh\", \"title\": \"Sword of Honour\", \"price\": 12.99},\n" +
                "      {\"category\": \"fiction\", \"author\": \"Herman Melville\", \"title\": \"Moby Dick\", \"isbn\": \"0-553-21311-3\", \"price\": 8.99}\n" +
                "    ],\n" +
                "    \"bicycle\": {\n" +
                "      \"color\": \"red\",\n" +
                "      \"price\": 19.95\n" +
                "    }\n" +
                "  }\n" +
                "}";

        DocumentContext documentContext = JsonPath.parse(json);

        // 查詢所有書籍的標題
        String[] bookTitles = documentContext.read("$.store.book[*].title");
        System.out.println("Book Titles: " + java.util.Arrays.toString(bookTitles));

        // 查詢價格小于10的書籍
        Map<String, Object> booksWithPriceLessThan10 = documentContext.read("$.store.book[?(@.price < 10)]");
        System.out.println("Books with price less than 10: " + booksWithPriceLessThan10);

        // 查詢作者為Nigel Rees的書籍
        Map<String, Object> booksByNigelRees = documentContext.read("$.store.book[?(@.author == 'Nigel Rees')]");
        System.out.println("Books by Nigel Rees: " + booksByNigelRees);

        // 查詢ISBN為0-553-21311-3的書籍
        Map<String, Object> bookWithSpecificISBN = documentContext.read("$.store.book[?(@.isbn == '0-553-21311-3')]");
        System.out.println("Book with ISBN 0-553-21311-3: " + bookWithSpecificISBN);
    }
}

在這個示例中,我們使用JsonPath庫解析了一個包含書籍和自行車的JSON字符串。然后,我們使用各種查詢表達式來提取所需的信息。這些查詢表達式包括:

  1. 查詢所有書籍的標題:$.store.book[*].title
  2. 查詢價格小于10的書籍:$.store.book[?(@.price < 10)]
  3. 查詢作者為Nigel Rees的書籍:$.store.book[?(@.author == 'Nigel Rees')]
  4. 查詢ISBN為0-553-21311-3的書籍:$.store.book[?(@.isbn == '0-553-21311-3')]

通過這種方式,你可以使用JsonPath庫輕松處理復雜查詢。

0
亚洲午夜精品一区二区_中文无码日韩欧免_久久香蕉精品视频_欧美主播一区二区三区美女