JSON में ऑब्जेक्ट्स की सरणी के बराबर YAML


192

मेरे पास वस्तुओं का एक JSON सरणी है जिसे मैं YAML में बदलने की कोशिश कर रहा हूं।

{"AAPL": [
  {
    "shares": -75.088,
    "date": "11/27/2015"
  },
  {
    "shares": 75.088,
    "date": "11/26/2015"
  },
]}

वहाँ YAML में एक समान प्रतिनिधित्व है कि सिर्फ JSON नहीं है? मैं कुछ ऐसा करना चाहूंगा

AAPL:
  - :
    shares: -75.088
    date: 11/27/2015
  - :
    shares: 75.088
    date: 11/26/2015

लेकिन मैं जिस साफ-सुथरी चीज के साथ आया हूं वह है

AAPL:
  - {
    shares: -75.088,
    date: 11/27/2015
  }
  {
    shares: 75.088,
    date: 11/26/2015
  }

जवाबों:


366

टी एल; डॉ

आप यह चाहते हैं:

AAPL:
  - shares: -75.088
    date: 11/27/2015
  - shares: 75.088
    date: 11/26/2015

मैपिंग

JSON ऑब्जेक्ट के बराबर YAML एक मैपिंग है, जो इस तरह दिखता है:

# flow style
{ foo: 1, bar: 2 }
# block style
foo: 1
bar: 2

ध्यान दें कि ब्लॉक मैपिंग में कुंजियों का पहला वर्ण एक ही कॉलम में होना चाहिए। प्रदर्शित करना:

# OK
   foo: 1
   bar: 2
# Parse error
   foo: 1
    bar: 2

दृश्यों

YAML में JSON सरणी के बराबर एक अनुक्रम है, जो इन दोनों में से एक जैसा दिखता है (जो समकक्ष हैं):

# flow style
[ foo bar, baz ]
# block style
- foo bar
- baz

एक ब्लॉक अनुक्रम में -s को एक ही कॉलम में होना चाहिए।

JSON to YAML

चलो अपने JSON को YAML में बदल दें। यहाँ आपका JSON है:

{"AAPL": [
  {
    "shares": -75.088,
    "date": "11/27/2015"
  },
  {
    "shares": 75.088,
    "date": "11/26/2015"
  },
]}

सामान्य ज्ञान के बिंदु के रूप में, YAML JSON का एक सुपरसेट है, इसलिए उपरोक्त पहले से ही मान्य YAML है - लेकिन आइए वास्तव में इस प्रीटीयर को बनाने के लिए YAML की विशेषताओं का उपयोग करें।

अंदर से बाहर शुरू, हम वस्तुओं है कि इस तरह लग रहे हैं:

{
  "shares": -75.088,
  "date": "11/27/2015"
}

बराबर YAML मैपिंग है:

shares: -75.088
date: 11/27/2015

हमारे पास सरणी (अनुक्रम) में इनमें से दो हैं:

- shares: -75.088
  date: 11/27/2015
- shares: 75.088
  date: 11/26/2015

ध्यान दें कि कैसे -s लाइन अप और मैपिंग कीज़ के पहले अक्षर लाइन अप करते हैं।

अंत में, यह अनुक्रम कुंजी के साथ मानचित्रण में स्वयं एक मूल्य है AAPL:

AAPL:
  - shares: -75.088
    date: 11/27/2015
  - shares: 75.088
    date: 11/26/2015

इसे पार्स करने और इसे JSON में वापस लाने से अपेक्षित परिणाम मिलता है:

{
  "AAPL": [
    {
      "date": "11/27/2015", 
      "shares": -75.088
    }, 
    {
      "date": "11/26/2015", 
      "shares": 75.088
    }
  ]
}

तुम इसे देख (और यह सहभागी संपादित) कर सकते हैं यहाँ


मैंने यह दर्शाने के लिए अपना प्रश्न अपडेट किया है कि सूची में कई आइटम हैं जिनमें शेयर और दिनांक जोड़े हैं।
30:15

3
@wegry: कोई फर्क नहीं पड़ता। यह भी देखें YAML वेबसाइट से उदाहरण: yaml.org/start.html
फेलिक्स क्लिंग

5

ऊपर महान जवाब। एक और तरीका है महान याम्लिक jq आवरण उपकरण का उपयोग करने के लिए, https://github.com/kislyuk/yq पर yq

अपने JSON उदाहरण को फ़ाइल में सहेजें, ex.json और फिर कहें

yq -y '.' ex.json

AAPL:
- shares: -75.088
  date: 11/27/2015
- shares: 75.088
  date: 11/26/2015
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.