20000 개가 넘는 객체가있는 거대한 JSON 파일이 있습니다. 이 json 파일에서 문자열을 쿼리하고 싶습니다. 그러나 jsonpath
을 사용하여 정확한 일치 항목 만 찾을 수 있었습니까? 내가하고 싶은 무엇jsonpath로 문자열 검색
{ "store": {
"book": [
{ "category": "reference",
"author": "Nigel Rees",
"title": "Sayings of the Century",
"price": 8.95
},
{ "category": "fiction",
"author": "Evelyn Waugh",
"title": "Sword of Honour",
"price": 12.99
},
{ "category": "fiction",
"author": "Herman Melville",
"title": "Moby Dick",
"isbn": "0-553-21311-3",
"price": 8.99
},
{ "category": "fiction",
"author": "J. R. R. Tolkien",
"title": "The Lord of the Rings",
"isbn": "0-395-19395-8",
"price": 22.99
}
],
"bicycle": {
"color": "red",
"price": 19.95
}
}
}
은 다음과 같습니다 :
jsonPath(data, "$..book[?(@.title like 'ord')]")
을 자신의 제목에 "ORD"를 가진 책을 얻을
이의 내 파일이 같은입니다 가정 해 봅시다.{ "category": "fiction",
"author": "J. R. R. Tolkien",
"title": "The Lord of the Rings",
"isbn": "0-395-19395-8",
"price": 22.99
}
{ "category": "fiction",
"author": "Evelyn Waugh",
"title": "Sword of Honour",
"price": 12.99
}
가능합니까?
답장을 보내 주셔서 감사합니다. 하지만 jsonpath에서 "like"연산자를 찾을 수 없었습니다. 지원되지 않는다는 뜻입니까? – huzeyfe
내가 틀 렸습니다. 분명히 LIKE 연산자는 지원되지 않았습니다. 그러나 jsonPath 유닛 테스트에서 정규 표현식의 사용법을 발견했습니다. 그 사용법에 대한 링크 된 답변을 업데이트했습니다. – Homer6
이 솔루션을 처리하기 위해 eval을 사용하고 있습니다. 따라서 검색을 위해 사용자가 제출 한 데이터를 사용하는 경우에는 입력을 적절하게 필터링하고 이스케이프 처리하여 악의적 인 사용자가 다른 사용자 대신 코드를 실행할 수 없도록해야합니다 (또는이 jsonPath가 node.js 등을 통해 서버 측에서 실행 중인지 여부). – Homer6