Java Jsonpath始终返回空列表

Java Jsonpath始终返回空列表,java,jsonpath,Java,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

我试图在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);
  }
}

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

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

  • 对JsonPath的根使用
    *
    是无效的,它应该是
    $

  • 在您要查找的对象上方还有另一个对象:
    searchResult


  • 您的最终JsonPath应该是
    $.searchResult.singleAccomViewData
    。解决上述问题后,它将按预期工作。

    上述问题不起作用的原因如下:

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

  • 对JsonPath的根使用
    *
    是无效的,它应该是
    $

  • 在您要查找的对象上方还有另一个对象:
    searchResult


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

    这是因为在您的JSONno中,
    “singleAccomViewData”:null
    ,即使我尝试其他人,也会得到空列表。代表*发言。singleAccomSearch@SeanBright它仍然会给我一个空列表,这是因为在你的JSONno中,
    “singleAccomViewData”:null
    ,即使我尝试其他人,也会得到空列表。代表*发言。singleAccomSearch@SeanBright但它还是给了我一张空名单
    {
      "searchResult": {
        "singleAccomViewData": null,
        "singleAccomSearch": false,
        "durationSelection": {
          "defaultDisplay": [
            6,
            7,
            8,
            9,
            10
          ] 
        }
       }
    }