jq를 사용하여 객체의 변수 값을 기준으로 객체를 선택하십시오.
다음 json 파일이 있습니다.
{
"FOO": {
"name": "Donald",
"location": "Stockholm"
},
"BAR": {
"name": "Walt",
"location": "Stockholm"
},
"BAZ": {
"name": "Jack",
"location": "Whereever"
}
}
jq를 사용하고 있으며 'location'이 'Stockholm'인 객체의 "name"요소를 가져오고 싶습니다.
나는 모든 이름을
cat json | jq .[] | jq ."name"
"Jack"
"Walt"
"Donald"
그러나 하위 키 (여기 "location" : "Stockholm"
) 의 값이 주어지면 특정 객체 만 인쇄하는 방법을 알 수 없습니다 .
주로 jQuery를 찾은 많은 인터넷 검색 결과, 답변이있는 블로그 게시물을 찾았습니다.
$ jq '.[] | select(.location=="Stockholm")' json
{
"location": "Stockholm",
"name": "Walt"
}
{
"location": "Stockholm",
"name": "Donald"
}
여기에서 : http://zerokspot.com/weblog/2013/07/18/processing-json-with-jq/
이름의 스트림을 얻으려면 :
$ jq '.[] | select(.location=="Stockholm") | .name' json
생산 :
"Donald"
"Walt"
해당 (키 이름, "name"속성) 쌍의 스트림을 얻으려면 다음을 고려하십시오.
$ jq -c 'to_entries[]
| select (.value.location == "Stockholm")
| [.key, .value.name]' json
산출:
["FOO","Donald"]
["BAR","Walt"]
비슷한 관련 질문이 있습니다. 원래 객체 형식을 다시 원한다면 (예 : FOO, BAR 키 이름)?
Jq는 객체와 키-값 쌍 배열을 제공 to_entries
하고 from_entries
변환합니다. map
선택 주위 와 함께
이 함수는 객체와 키-값 쌍의 배열 사이를 변환합니다. to_entries에 오브젝트가 전달되면 입력의 각 k : v 항목에 대해 출력 배열에 { "key": k, "value": v}가 포함됩니다.
from_entries는 반대 변환을 수행하며 with_entries (foo)는 to_entries의 약어입니다. 지도 (foo) | from_entries는 객체의 모든 키와 값에 대한 작업을 수행하는 데 유용합니다. from_entries는 키, 키, 이름, 이름, 값 및 값을 키로 허용합니다.
jq15 < json 'to_entries | map(select(.value.location=="Stockholm")) | from_entries'
{
"FOO": {
"name": "Donald",
"location": "Stockholm"
},
"BAR": {
"name": "Walt",
"location": "Stockholm"
}
}
with_entries
속기를 사용하면 다음 과 같습니다.
jq15 < json 'with_entries(select(.value.location=="Stockholm"))'
{
"FOO": {
"name": "Donald",
"location": "Stockholm"
},
"BAR": {
"name": "Walt",
"location": "Stockholm"
}
}
'Programing' 카테고리의 다른 글
PHP로 문자열의 처음 4자를 제거 (0) | 2020.05.16 |
---|---|
도커 이미지 내용을 보는 방법 (0) | 2020.05.16 |
N "고유 한"색상을 자동으로 생성하는 방법은 무엇입니까? (0) | 2020.05.16 |
문자열에 단일 문자가 나타나는지 어떻게 확인할 수 있습니까? (0) | 2020.05.16 |
힘내 비난 : 통계 (0) | 2020.05.15 |