YAML मल्टी लाइन Arrays


140

में YAML , आप आसानी से बना सकते हैं बहु लाइन तार । हालांकि, मैं |चरित्र का उपयोग करके एक बहु-पंक्ति सरणी (मुख्य रूप से कॉन्फ़िगरेशन फ़ाइलों के भीतर पठनीयता के लिए) बनाने की क्षमता चाहूंगा ।

एक YAML सरणी के रूप में प्रतिनिधित्व किया जा सकता है ['key1', 'key2', 'key3']:।

एक YAML अनुक्रम एक डैश का उपयोग करता है उसके बाद एक स्थान और फिर एक स्ट्रिंग:

- String1
- String2
- String3

यह करने के लिए मूल्यांकन करेगा: ['string1', 'string2', 'string3']

एक YAML मानचित्रण कुंजी और मूल्य जोड़े का एक सरणी है जिसे हम YAML में हर समय देखते हैं:

Key1: string1
Key2: string2
Key3: string3

यह सब अच्छी तरह से और अच्छा है, लेकिन मैं अपने जीवन के लिए यह नहीं देख सकता कि मल्टी-लाइन सरणी कैसे करें। कुछ इस तरह:

|
['string1', 'string2', 'string3']
['string4', 'string5', 'string6']

YAML में कई सरणी मैपिंग बनाने और उन्हें मेरी पसंद की प्रोग्रामिंग भाषा में मर्ज करने का संक्षिप्त तरीका, क्या बहु-पंक्ति सरणियों को प्राप्त करने का कोई तरीका है, हो सकता है कि { }जैसे पायथन के पास लेकिन YAML में हो?


ईमानदारी से, एक बहु-पंक्ति सरणी क्या है और इसे कब सार्थक होना चाहिए? बल्कि आपके कोड के केवल लग रहा है
OK999

सभी विकल्पों को एक साथ देखने के बजाय सभी विकल्पों को देखने के लिए क्षैतिज रूप से स्क्रीन पर स्क्रॉल करने के बाद।
जिम्बो

जवाबों:


240

एक YAML अनुक्रम है एक सरणी । तो यह व्यक्त करने का सही तरीका है:

key:
  - string1
  - string2      
  - string3
  - string4
  - string5
  - string6

यह अर्थ में समान है:

key: ['string1', 'string2', 'string3', 'string4', 'string5', 'string6']

कई लाइनों पर एकल-पंक्ति सरणी को विभाजित करना भी कानूनी है:

key: ['string1', 'string2', 'string3', 
  'string4', 'string5', 
  'string6']

और यहां तक ​​कि एकल-पंक्ति सरणियों में बहु-पंक्ति स्ट्रिंग्स हैं:

key: ['string1', 'long
  string', 'string3', 'string4', 'string5', 'string6']

1
क्या यह एक मुद्दा है अगर तार के साथ शुरू होता है - (जैसे कमांड लाइन में पारित विकल्प)? क्या मुझे फिर बोली? `-" -मारग "?
इकिस

2
यह पूरी तरह से जो भी कार्यक्रम आप YAML पार्स करने के लिए उपयोग कर रहे हैं पर निर्भर करता है। यह प्रश्न केवल YAML विनिर्देशन के बारे में है।
स्टीव बेनेट

39

क्या आपने यह कोशिश की है?

-
  name: Jack
  age: 32
-
  name: Claudia
  age: 25

मुझे यह मिलता है: [{"name"=>"Jack", "age"=>32}, {"name"=>"Claudia", "age"=>25}](मैं YAMLरूबी वर्ग का उपयोग करता हूं )।


6

निम्नलिखित काम करेगा:

myarray: [
  String1, String2, String3,
  String4, String5, String5, String7
]

मैंने स्नेकाइमल कार्यान्वयन का उपयोग करके इसका परीक्षण किया, मैं हालांकि अन्य कार्यान्वयन के बारे में निश्चित नहीं हूं।


2
यह कठपुतली एंटरप्राइज 3.7 hiera yaml (रूबी yaml) के साथ काम करता है एक चीज जो मुझे रूबी yaml मिल रही है वह काफी संवेदनशील है पहचान भी है, और टैब का उपयोग करने से बचें। इसलिए ऊपर का उदाहरण दो रेखाओं की तरह होना चाहिए, जिसमें समान स्थान है जहां पहली पंक्ति है myarray: [String1, String2, String3,और दूसरी पंक्ति है `स्ट्रिंग 4, स्ट्रिंग 5, स्ट्रिंग 5, स्ट्रिंग 7]`
वालिद

2

मेरे लिए कार्य करता है और देखने की दृष्टि से अच्छा है जब सरणी तत्व मान छोटे होते हैं:

key: [string1, string2, string3, string4, string5, string6]

नोट: स्नेकाइमल कार्यान्वयन का उपयोग किया जाता है


0

यदि आपको जिस चीज की आवश्यकता है, वह सरणियों का एक सरणी है, तो आप इस तरह से कर सकते हैं:

key:
  - [ 'value11', 'value12', 'value13' ]
  - [ 'value21', 'value22', 'value23' ]

धन्यवाद Vinicius, लेकिन इस प्रश्न को स्पष्ट रूप से कहा गया है: "मैं एक बहु-पंक्ति सरणी बनाने की क्षमता चाहूंगा", एकाधिक सरणियों की एक पंक्ति नहीं।
जिम्बो
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.