programing

jq가 대시와 번호가 있는 태그 이름에서 작동하지 않습니다.

lovejava 2023. 3. 25. 09:10

jq가 대시와 번호가 있는 태그 이름에서 작동하지 않습니다.

사용하고 있다jq내 json 태그에 "-"가 있어jq컴파일되지 않습니다.나는 그것을 성공시키기 위해 피할 수 없다.명령어는 다음과 같습니다.

curl -X GET -H "X-AppKey:foo" "foo/v2/_status" | jq '.component-status[]'

나는 ...을 읽고 있다.jq이 게시물은 https://github.com/stedolan/jq/issues/202 입니다만, 동작하지 않습니다.

이것은 의 출력입니다.curl:

{
  "status": "ok",
  "hostname": "0b0b495a46db",
  "component-status": [
   {
     "status-code": 200,
     "component": "Service1",
     "status": "OK"
   },
   {
     "status-code": 200,
     "component": "Service2",
     "status": "OK"
   }
  ]
 }

감 잡히는 게 없어요?

괄호와 큰따옴표로 묶어야 합니다.

jq '."component-status"'

지정된 입력으로 다음과 같이 반환됩니다.

[
  {
    "status": "OK",
    "component": "Service1",
    "status-code": 200
  },
  {
    "status": "OK",
    "component": "Service2",
    "status-code": 200
  }
]

jq 매뉴얼 (개발) --> 기본 필터:

.foo, .foo.bar

가장 간단한 유용한 필터는.fooJSON 오브젝트(사전 또는 해시)를 입력으로 지정하면 키 "foo"로 값을 생성하거나 존재하지 않으면 null로 값을 생성합니다.

키에 특수 문자가 포함되어 있는 경우는, 다음과 같이 큰따옴표로 둘러싸야 합니다.."foo$".

필드 이름에 대시가 있는 경우 github issue Cannot select 필드에서 다음을 수행합니다.

현재, 그것은 뺄셈으로 해석됩니다.키가 식별자 구문에 맞지 않을 경우 언제든지 문자열을 명시적으로 사용할 수 있습니다.

rjurney 또는 그의 답변에 대한 코멘트 작성자가 제안한 옵션은 나에게 효과가 없었습니다(아마 PowerShell을 사용했기 때문일 것입니다). 그러나 github 문제에서 나온 답변에는 \를 사용하여 큰따옴표를 회피하는 방법이 있었습니다.

jq '.\"component-status\"'

언급URL : https://stackoverflow.com/questions/37344329/jq-not-working-on-tag-name-with-dashes-and-numbers