Wie Suche ich ein array mit JSONPath in Java?

Ich möchte schreiben Sie einen unit test für eine web service mit json-Pfad-geltend zu machen. Angesichts dieses JSON:

[ 
  ["Some short name","Some parent","Some name"],
  ["Some short name 2","Some parent 2","Some name 2"] 
]

Möchte ich überprüfen, dass die Eltern von "Einige Namen 2" ist "ein Eltern-2". Ich kann nicht ändern Sie die Struktur von JSON, da es diktiert von einer Drittanbieter-Bibliothek.

Hier ist die JSONPath Ausdruck, die ich kam mit:

$..[?(@[2] == 'Some name 2')][1]

Dieser Ausdruck funktioniert gut und gibt gibt das erwartete Ergebnis ("Einige Eltern 2') in dieses JSON-tool. Allerdings, wenn Sie es in Java mit der JSONPath Bibliothek bekomme ich ein leeres Ergebnis anstelle des richtigen Wertes:

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

public class TestJSONPath
{
  @Test
  public void testJsonPath() {
     String json = "[[\"Some short name\",\"Some parent\",\"Some name\"]," +
       "[\"Some short name 2\",\"Some parent 2\",\"Some name 2\"]]";

     System.out.println(JsonPath.read(json, "$[1][1]"));    //OK, returns 'Some parent 2'
     System.out.println(JsonPath.read(json, "$..[?(@[2] == 'Some name 2')][1]")); //Not OK, returns an empty list
 }
}

Hier ist meine pom.xml:

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  <modelVersion>4.0.0</modelVersion>

  <groupId>test</groupId>
  <artifactId>test</artifactId>
  <version>1.0-SNAPSHOT</version>

  <dependencies>
    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>4.11</version>
      <scope>test</scope>
    </dependency>
    <dependency>
      <groupId>com.jayway.jsonpath</groupId>
      <artifactId>json-path</artifactId>
      <version>2.1.0</version>
      <scope>test</scope>
    </dependency>
    <dependency>
      <groupId>com.jayway.jsonpath</groupId>
      <artifactId>json-path-assert</artifactId>
      <version>2.1.0</version>
      <scope>test</scope>
    </dependency>
  </dependencies>
</project>

Könnten Sie mir bitte helfen mit Ideen, um dieses Problem zu beheben?

Schreibe einen Kommentar