У меня ошибка после того, как я поставил $.student[?(@.id= = "543020619-3")].register[*].sname.
Но когда я удалил его, ошибка исчезла.
Я обнаружил, что мне нужно изменить String с "" на '', и тогда ошибка улетит.
<%@ page language = "java" contentType = "text/html; charset=utf-8" pageEncoding = "utf-8" %>
<%@ page import = "java.util.List, java.nio.file.*, com.jayway.jsonpath.*" %>
<%
// 1. อ่านไฟล์เก็บลง String
String json = new String(Files.readAllBytes(Paths.get("C:\\Users\\Tuna\\Desktop\\JSONlab\\student.json")), "UTF8");
// 2. แปลข้อมูลจาก String ให้อยู่ในรูปแบบ Object ของ JSON
Object document = Configuration.defaultConfiguration().jsonProvider().parse(json);
// 3. ดึงผลลัพธ์ ด้วย JSON Path
// 3.1 กรณีที่ผลลัพธ์ไม่เป็น Array
/*String firstName = JsonPath.read(document, "$.student[1].stdName");
out.println(firstName + "<br><br>");*/
out.println("<br>");
out.println("ข้อ 1 : JSON Path คือ $...????" + "<br>");
out.println("<b>" + "ผลลัพธ์" + "</b>");
out.println("<br>");
// 3.2 กรณีที่ผลลัพธ์เป็น Array
List<String> name = JsonPath.read(document, "$..stdName");
for(int i=0; i<name.size(); i++) {
out.println(name.get(i) + "<br>");
}
out.println("<br>");
out.println("ข้อ 2 : JSON Path คือ $...????" + "<br>");
out.println("<b>" + "ผลลัพธ์" + "</b>");
out.println("<br>");
List<String> stdName = JsonPath.read(document, "$.student[?(@.gpa>3.0)].stdName");
for(int i=0; i<stdName.size(); i++) {
out.println(stdName.get(i) + "<br>");
}
out.println("<br>");
out.println("ข้อ 3 : JSON Path คือ $...????" + "<br>");
out.println("<b>" + "ผลลัพธ์" + "</b>");
out.println("<br>");
List<String> enroll = JsonPath.read(document, "$.student[?(@.id= = "543020619-3")].register[*].sname");
for(int i=0; i<enroll.size(); i++) {
out.println(enroll.get(i) + "<br>");
}
%>java-код на jsp. Ничего хорошего. Так в чем твоя проблема?




Эта строка - ваша проблема:
"$.student[?(@.id= = "543020619-3")].register[*].sname"
Вы не избегаете кавычек. Используйте следующее:
"$.student[?(@.id==\"543020619-3\")].register[*].sname"
Спасибо за ответ. Ошибка исчезла, но данные не отображаются. Я обнаружил, что мне нужно поменять "" на "'.
Добро пожаловать в StackOverflow. Пожалуйста, прочтите и следуйте инструкциям по публикации в справочной документации. Здесь применяется минимальный воспроизводимый пример. Мы не сможем эффективно помочь вам, пока вы не опубликуете свой код MCVE и точно не опишете проблему. Мы сможем вставить ваш опубликованный код в текстовый файл и воспроизвести описанную вами проблему.