首页 > 解决方案 > Jsonpath 总是返回空列表

问题描述

我试图在 jayway JsonPath 的帮助下从 json 文件中获取值。但每次它返回空列表。

我正在尝试将 json 路径用作 *.singleAccomViewData

import java.util.*;

import com.jayway.jsonpath.DocumentContext;
import com.jayway.jsonpath.JsonPath;

public class JSONMapper {
  public static void main(String[] args) throws Exception {
    DocumentContext jsonContext = JsonPath.parse("D:\\Docs\\search.json");
     List<String> accom = JsonPath.read("D:\\Docs\\search.json", "*.singleAccomViewData");
     System.out.println("accom value: " + accom);
  }
}

下面是我的 JSON 文件:

{
  "searchResult": {
    "singleAccomViewData": null,
    "singleAccomSearch": false,
    "durationSelection": {
      "defaultDisplay": [
        6,
        7,
        8,
        9,
        10
      ] 
    }
   }
}

标签: javajsonpath

解决方案


上述方法不起作用有几个原因:

  1. 如果您正在调用,JsonPath.read(String, String)那么第一个字符串应该是 Json 本身,而不是 Json 文件的路径。

  2. 使用*JsonPath 的根是无效的,它应该是$.

  3. 在您要查找的内容之上还有另一个对象:searchResult.

你的最终 JsonPath 应该是$.searchResult.singleAccomViewData. 修复上述问题,它应该可以按预期工作。


推荐阅读