code

jq를 사용하여 json 문서의 단일 값을 업데이트하려면 어떻게 해야 합니까?

starcafe 2023. 3. 19. 18:22
반응형

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": falseJSON의 나머지 부분을 보존하면서요?

{
  "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

반응형