문자열이 jq의 유효한 JSON인지 확인합니다.
서비스를 들어 올릴 때 오류를 잡아야 합니다.응답은 다음과 같습니다.null, 다음과 같은 문자열 오류 메시지
error services-migration/foobar: Not found: services-migration/foobar
또는 모든 것이 정상일 때 유효한 JSON을 사용할 수 있습니다.어떻게 할 수 있을까 해서jq제공된 문자열이 유효한 JSON인지 확인하는 것만으로 끝납니다.문자열에서 다음과 같은 키워드를 확인할 수 있었습니다.errorf.e. 하지만 좀 더 강력한 옵션을 찾고 있어요.저는...true/false또는1/0jq에서.난 그 서류들을 뒤져보고 있었어jqSO에 관한 질문도 몇 가지 있습니다만, JSON에서 주요 값을 찾아내는 것이 전부였습니다.단순히 문자열을 검증하는 것은 아닙니다.
갱신:
이거 있어요.
result=$(some command)
그 결과 스트링이 됩니다.error services-migration/foobar: Not found: services-migration/foobar
그리고 if 스테이트먼트:
if jq -e . >/dev/null 2>&1 <<<"$result"; then
echo "it catches it"
else
echo "it doesn't catch it"
fi
그리고 그것은 항상 결국에 끝나게 된다.else절을 클릭합니다.
매뉴얼:
-e / --syslog-status:
마지막 출력 값이 false 또는 null이 아닌 경우 jq의 종료 상태를 0으로 설정하고, 마지막 출력 값이 false 또는 null인 경우 1, 유효한 결과가 생성되지 않은 경우 4로 설정합니다.통상, 사용상의 문제나 시스템 에러가 있는 경우는 jq가 2, jq 프로그램의 컴파일 에러가 있는 경우는 3, jq 프로그램이 실행되고 있는 경우는 0으로 종료됩니다.
다음 기능을 사용할 수 있습니다.
if jq -e . >/dev/null 2>&1 <<<"$json_string"; then
echo "Parsed JSON successfully and got something other than false/null"
else
echo "Failed to parse JSON, or got false/null"
fi
실제로 다른 유형의 오류를 구별하는 데 신경을 쓰지 않는다면-e전환합니다.이 경우 유효한 JSON(false/null 포함)으로 간주되는 모든 것이 필터에 의해 정상적으로 해석됩니다..프로그램이 정상적으로 종료되기 때문에if브랜치 뒤에 이어집니다.
이건 나한테 효과가 있어
echo $json_string | jq -e . >/dev/null 2>&1 | echo ${PIPESTATUS[1]}
반환 코드를 반환합니다.
- 0 - 성공
- 1 - 실패
- 4 - 무효
그런 다음 추가 코드로 리턴 코드를 평가할 수 있습니다.
다음 명령 및 설명은 다음과 같습니다.jq가장 저렴한 방법으로 JSON을 검증할 수 있습니다.JSONLint와 같이 이 작업에 적합한 툴이 있다고 생각합니다만, 수중에 있는 것은,jq이게 제 기여입니다.
JSON 파일의 유효성을 확인하고도 에러를 표시하려면STDERR출력, 사용jq다음 bash 원라이너를 사용할 수 있습니다.
jq -reM '""' <<<'<MAYBE_INVALID_JSON>' 1>/dev/null
그 의미는 다음과 같습니다.
실행
jq플래그가 있는 경우:-r원시 값을 출력하다(처리 또는 포맷 없음)-e보다 큰 코드로 종료하다0-MJSONJSON을
번째 ★★★★★★★★★★★★★★.
jq는 " " 입니다.'""'합니다.jq를 위한 것부터 합니다.<<<뒤에 은 "Here String이라고 불리며 처럼 취급하여 "Here String"으로 합니다.STDIN(일부러), 이 경우는 수 .
<<<'<MAYBE_INVALID_JSON>'하면, 그 동작합니다.다음 .
STDOUT을 「(JSON을 포함한다)」로 합니다./dev/null
또한 다음 명령을 사용하여 오류 아래에 있는 커스텀메시지를 출력할 수도 있습니다.
jq -reM '""' <<<'<MAYBE_INVALID_JSON>' 1>/dev/null || ( exit_code="$?"; echo 'ERROR: Invalid JSON file. See errors above' 1>&2; exit "$exit_code" )
여기서 추가된 부분은 다음과 같습니다.
||한 경우 합니다.- 「」로 .
(원래 명령어의 종료 코드를 사용하여 종료해야 하므로 실제로 필요합니다.- 를 합니다.
exit_code에 대한$? - 를 사용하여 합니다.
echo exit명령어$exit_code
- 를 합니다.
- 서브셸을 닫습니다.
선과 같은 가변 콘텐츠의 경우, 그것은 나에게 효과적이다.
echo "$my_potential_json"|jq empty > /dev/null 2>&1
if [ $? -eq 0 ]; then
echo "found valid json:$my_potential_json"
do_whatever....
언급URL : https://stackoverflow.com/questions/46954692/check-if-string-is-a-valid-json-with-jq
'programing' 카테고리의 다른 글
| JSONAray 및 JSONObject를 사용하여 포어치 (0) | 2023.04.04 |
|---|---|
| 각도에서의 특성 변경 구독JS (0) | 2023.04.04 |
| Lombok - java.lang.StackOverflowError: toString 메서드의 null입니다. (0) | 2023.04.04 |
| DataBufferLimitException:버퍼 webflux 오류에 대한 최대 바이트 제한을 초과했습니다. (0) | 2023.04.04 |
| 카테고리에 따라 제품별로 WooCommerce에 요금 추가 (0) | 2023.04.04 |