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.