2016-04-18 27 views
1

我試圖簡化此數據:YAML本地錨?

farm: 
    - pets: 
    - type: fish 
     breedtype: fish 
     name: dory 
    - type: dog 
     breedtype: dog 
     name: lassie 

基本型和breedtype總是相同的,不幸的是這種情況。

我試圖簡化此通過某種方式使用錨

base: &base 
    type: &type fish 
    breedtype: *type 
farm: 
    type: &type dog 
    <<: *base 

我想*基地繼承&型狗&類型。

我不確定這是否是正確的方法,或者如果有更簡單的方法,我看錯了問題?

+0

不應該有'breedtype:* type'嗎? –

+0

@HawkenRives正確,我解決了它。謝謝 –

+0

由於我不知道YAML有'''操作符,所以我不確定我是否適合談論這個問題,但是您的解決方案對我來說看起來非常好。它工作嗎? –

回答

2

儘管YAML定義了<<類型,但請注意,這不是規範的一部分,而是type repository的一部分,它基於過時的YAML 1.1版,並且自此以後未更新。不需要YAML實現來支持這種類型。此外,它不會執行您認爲它的操作,因爲別名*type已在其出現的上下文中解析並始終鏈接到值fish

請注意,YAML是純數據。它不能夠也沒有設計執行像類型的規則總是必須匹配品種類型。用於加載數據的模式由加載數據的模式定義。如果在您的數據架構中,type總是等於breedtype,那麼您可以在YAML中省略breedtype,因爲將它加載到應用程序時,可以將其值設置爲type

+0

不幸的是,yaml實際上被轉換爲另一種格式,我無法操作,但是感謝您確認這是不可能的。我一直在搜索規範一個小時。 –