를 사용하여 JSON 개체 목록에서 (알려진 키를 일치),업데이트 하나 개의 값 i가 환경 파일과 아래 형식으로 여러 JSON 파일이 및 엔드 포인트에 대해 그것을 테스트해야 JQ
{
"id": "test1123",
"name": "my testing",
"values": [
{
"enabled": true,
"key": "URL",
"value": "http://localhost:3000/",
"type": "text"
},
{
"enabled": true,
"key": "User1Token",
"value": "",
"type": "text"
},
{
"enabled": true,
"key": "User2Token",
"value": "",
"type": "text"
},
{
"enabled": true,
"key": "IdentityURL",
"value": "",
"type": "text"
},
{
"enabled": true,
"key": "AdminToken",
"value": "",
"type": "text"
}
],
"timestamp": 1511892974802,
"_postman_variable_scope": "environment",
"_postman_exported_at": "2017-11-28T19:38:23.389Z",
"_postman_exported_using": "Postman/5.3.0"
}
나는 원 테스트를 실행하기 전에이 json에서 엔드 포인트를 업데이트하십시오. 종점 값은 키 "URL"인 값 value 속성 오브젝트
그래서 상기의 경우에, I 값 어레이의 첫번째 인덱스에 엔드 포인트를 업데이트해야 추가해야
{
"enabled": true,
"key": "URL",
"value": "http://10.20.200.1/",
"type": "text"
}
어디 http://10.20.200.1/ 내 끝점입니다.
jq '.values | map(if .key == "URL" then . + {"value":"10.20.13.28/";} else . end)'
... 그러나 이것은 구문 오류가 발생합니다
내가 사용하기 위해 노력하고있어 현재의 코드입니다. 누구나 jq를 올바르게 사용하여 값을 올바르게 업데이트하는 방법을 제안 할 수 있습니까?
참고 : 키 URL은 항상 값의 첫 번째 인덱스가 아닙니다.
시도한'jq' 코드를 표시 할 수 있습니까? –
jq '. 값 | map (.key == "URL"then. + { "value": "http://10.20.13.28/"} else. end) '. 이 문제는 단지 출력 객체가 전체 json을 포함하고 있기 때문입니다. 값 객체 인 – Annette