2016-07-18 1 views
0

yaml 용어를 잘못 사용하면 사전에 사과하므로 매우 익숙합니다.노드가 참조하는 연관 배열에서 하나의 값을 변경하는 방법

그래서이 항목은 연관 배열이고이 파일을 여러 번 반복하기 위해 노드를 사용하고 싶지만 하위 배열에서 하나의 값을 변경해야합니다. 전체 배열을 덮어 쓰지 않고 어떻게해야하는지 알고 있습니다. 그래서 여기

목록의 항목입니다

- &def_service type: service name: Remote Service config: machine: '' version: '1.0.0' apikey: VALUE_I_WANT_TO_CHANGE

내가하려고 노력했습니다 제가

- <<: *def_service config: apikey: NEW_VALUE

하지만 설정이 그래서 그냥 전체 배열을 덮어 씁니다 막바지

나는 대답에 대해 매우 감사 할 것이다. 나는 꽤 붙어있다.

답변

0

그래서 내게 어쩌면 가장 좋은 대답은 이처럼 config 배열에 대한 또 다른 변수를 소개하는 것이 아니라는 것입니다.

- &def_service type: service name: Remote Service config: &service_config machine: '' version: '1.0.0' apikey: VALUE_I_WANT_TO_CHANGE

그래서를 참조 나는이

- <<: *def_service config: <<: *service_config apikey: NEW_VALUE

0

YAML은 프로그래밍 언어가 아닙니다했다. 이것은 데이터 표현을위한 것이지 데이터 변환을위한 것이 아닙니다.

사용하는 병합 키 (<<)는 YAML 사양의 일부가 아닙니다. YAML 형식 저장소의 일부이며, YAML 형식 저장소의 일부입니다 (YAML 1.1에 정의되어 있기 때문에). 따라서 귀하의 질문은 귀하가 사용하는 YAML 프로세서에 크게 의존합니다. 하나의 프로세서는 다른 프로세서는 구현하지 않을 수도 있습니다.

특정 문제가 있으므로 YAML을 문제에 맞게 작성한 다음 코드에서 처리하는 것이 좋습니다 (코드를 담당한다고 가정). 이런 식으로 뭔가가 :

- !config_base 
    &def_service 
    type: service 
    name: Remote Service 
    config: &service_config 
    machine: '' 
    version: '1.0.0' 
    apikey: VALUE_I_WANT_TO_CHANGE 

- !config_child 
    base: *def_service 
    substitutions: 
    config: 
     apikey: NEW_VALUE 

그런 다음 직렬화 YAML 구조 내부의 대체를 수행하는 코드를 작성할 수 있습니다.

관련 문제