source

"-" 대시로 JSON 속성에 액세스할 수 없습니다.

manysource 2023. 3. 16. 21:38

"-" 대시로 JSON 속성에 액세스할 수 없습니다.

문자열에 대시 문자가 있는 경우 json 개체에서 값을 검색할 수 없습니다.

{
"profile-id":1234, "user_id":6789
}

파싱된 파일을 참조하려고 하면jsonObj.profile-id그것은 되돌아온다ReferenceError: "id" is not definedjsonObj.user_id는 6789를 반환합니다.

외부 API 호출에 의해 반환되는 값을 변경할 방법이 없습니다.대시를 제거하기 위해 반환된 문자열을 해석하려고 하면 전달된 URL 등이 파괴됩니다.헬프?

jsonObj.profile-id는 뺄셈 표현식입니다(즉,jsonObj.profile - id).

식별자에 표시할 수 없는 문자가 포함된 키에 액세스하려면 , 다음의 괄호를 사용합니다.

jsonObj["profile-id"]

이 답변과 더불어 어레이 구문을 사용하여 JSON에 액세스하는 경우 Node.js에서[]중첩된 모든 JSON 키는 이 구문을 따라야 합니다.

이쪽이 아니다

json.first.second.third['comment']

에러가 표시됩니다.

이 길이 맞다

json['first']['second']['third']['comment'] 

즉, 하이픈을 사용하여 다음과 같은 작업을 수행할 수 있습니다.

    - name: free-ud-ssd-space-in-percent
      debug:
        var: clusterInfo.json.content["free-ud-ssd-space-in-percent"]

승인된 솔루션을 Home Assistant 값 템플릿에 적용하려는 경우 다음과 같이 이중으로 중첩할 경우 단일 따옴표를 사용해야 합니다.

value_template: "{{ value_json['internet-computer'].usd }}"

Linux의 경우 다음 템플릿을 사용하여 대시 '-'가 포함된 JSON 값을 인쇄해 보십시오.

jq '.["value-with-dash"]'

그것은 나에게 효과가 있었다.

언급URL : https://stackoverflow.com/questions/13869627/unable-to-access-json-property-with-dash