jq를 사용하여 json 문서의 단일 값을 업데이트하려면 어떻게 해야 합니까?
어플리케이션: 내가 아주 명백한 것을 간과했을 때, 나는 방금 발견했다.jq
주변 데이터에 영향을 주지 않고 하나의 JSON 값을 업데이트하려고 합니다.
파이프로 한 대 피우고 싶은데요.curl
로 귀결되다.jq
, 값을 갱신하고 갱신된 JSON을 에 파이프합니다.curl -X PUT
뭐랄까...
curl http://example.com/shipping.json | jq '.' field: value | curl -X PUT http://example.com/shipping.json
지금까지 해킹을 해서sed
의 몇 가지 예를 보면,|=
을 교환하다.jq
난 이게 필요없다고 확신해당연히.
여기 JSON 샘플이 있습니다.jq
세팅하다"local": false
JSON의 나머지 부분을 보존하면서요?
{
"shipping": {
"local": true,
"us": true,
"us_rate": {
"amount": "0.00",
"currency": "USD",
"symbol": "$"
}
}
}
오브젝트 값은 다음 명령을 사용하여 설정합니다.=
교환입니다. |=
반면 값을 갱신하는 데 사용됩니다.그것은 미묘하지만 중요한 차이입니다.필터의 콘텍스트가 바뀝니다.
속성을 상수 값으로 설정하므로=
교환입니다.
.shipping.local = false
속성에 값을 설정할 때 반드시 존재할 필요는 없습니다.이 방법으로 새로운 값을 쉽게 추가할 수 있습니다.
.shipping.local = false | .shipping.canada = false | .shipping.mexico = true
값을 업데이트합니다(.foo.bar을 "new value"로 설정).
jq '.foo.bar = "new value"' file.json
변수를 사용하여 값을 업데이트합니다(.foo.bar을 "hello"로 설정).
variable="hello"; jq --arg variable "$variable" '.foo.bar = $variable' file.json
연산자 |=와 유사한 함수는 map입니다. map은 배열에 대한 이전 필터의 필요성을 피하기 위해 적합합니다.
데이터가 배열이라고 가정합니다(이 예에서는 매우 일반적입니다).
[
{
"shipping": {
"local": true,
"us": true,
"us_rate": {
"amount": "1.00",
"currency": "USD",
"symbol": "$"
}
}
},
{
"shipping": {
"local": true,
"us": true,
"us_rate": {
"amount": "1.00",
"currency": "USD",
"symbol": "$"
}
}
}
]
따라서 코드 내의 어레이를 다음과 같이 고려할 필요가 있습니다.
http://example.com/shipping.json | jq '.[] | .shipping.local = "new place"' | curl -X PUT http://example.com/shipping.json
또는 모든 어레이 요소에서 동작하도록 설계된 맵 기능을 사용합니다.
http://example.com/shipping.json | jq 'map(.shipping.local = "new place")' | curl -X PUT http://example.com/shipping.json
관찰
학습 중인 사용자를 위해 jq 사용법에서도 몇 가지 실수를 했습니다.첫 번째 파라미터는 프로그램으로 "읽기" 때문에 원하는 명령어는 모두 프로그램을 호출한 후 첫 번째 문자열에 포함됩니다.
언급URL : https://stackoverflow.com/questions/31034746/how-do-i-update-a-single-value-in-a-json-document-using-jq
'code' 카테고리의 다른 글
Wordpress는 관리자에게 네이티브 날짜 선택 기능을 제공합니까? (0) | 2023.03.19 |
---|---|
Spring Boot에서의 설정 순서 (0) | 2023.03.19 |
TypeScript에서 "keyof typeof"는 무엇을 의미합니까? (0) | 2023.03.19 |
리액트 - 컴포넌트 동적 Import (0) | 2023.03.19 |
MVC 4에서의 적절한 JSON 시리얼화 (0) | 2023.03.19 |