2012-03-02 32 views
23

मैं अपनी तालिका के लिए एक स्थिरता लिख ​​रहा हूं। और coloums में से एक एक JSON स्ट्रिंग में मान के रूप में लेता है।वाईएएमएल फ़ाइल में JSON डेटा एम्बेड करना

समस्या स्थिरता के रूप में नाकाम रहने के लोड नहीं है:

Fixture::FormatError: a YAML error occurred parsing /home/saurajeet/code/dcbox/test/fixtures/hardware.yml. Please note that YAML must be consistently indented using spaces. Tabs are not allowed. Please have a look at http://www.yaml.org/faq.html 
The exact error was: 
    ArgumentError: syntax error on line 145, col 73: ` portslist: [{"name":"ob1","port_num":0,"port_type":"network"},{"name":"ob2","port_nu'..... 

इस के लिए कोई समाधान।

+0

क्या आपके पास वास्तव में समस्याग्रस्त फ़ाइल का पेस्ट है? आप किस प्रोसेसर का उपयोग कर रहे हैं? त्रुटि रिपोर्ट यह है कि आपके पास * टैब * वर्ण है, इसलिए यह बहुत विशिष्ट समस्या है। – clarkevans

उत्तर

28

मैं उद्धरण में ले रही है विश्वास चाल करना चाहिए: स्वीकार किए जाते हैं जवाब पर

portslist: '[{"name":"ob1","port_type" ... }]' 
+0

इतना स्पष्ट .. विशेष प्रतीकों से बचने की कोशिश की ... :( – Saurajeet

+2

यह मान एक स्ट्रिंग बनता है, इसलिए यह वास्तव में एम्बेड नहीं होता है। अगर आप ऐसा करना चाहते हैं, तो मैं एक ब्लॉक स्केलर और इंडेंट का उपयोग करूंगा। – clarkevans

+0

स्ट्रिंग्स हैं स्केलर प्रकार, लेकिन मुझे तुम्हारा क्या मतलब है। – Thermatix

21

clarkevans 'टिप्पणी JSON की लंबी बिट्स के लिए एक बेहतर जवाब का सुझाव दिया है, क्योंकि आप रेखाओं को रैप कर सकते हैं। मैं ब्लॉक अदिश वाक्य रचना उन्होंने कहा देखा और सोचा था कि मैं यहाँ एक उदाहरण में शामिल हैं:

portslist: > 
    [{"name":"ob1","port_num":0,"port_type":"network"}, 
    {"name":"ob2","port_nu... 
6

आप स्ट्रिंग है, तो आप के रूप में Vlad Khomich उल्लेख के रूप में सरल उपयोग कर सकते हैं:

portslist: '[{"name":"ob1","port_num":0,"port_type":"network"},...]' 

हैं आप ERB उपयोग कर रहे हैं और एक वस्तु है, तो आप to_json का उपयोग करें और JSON स्ट्रिंग को बचने के लिए निरीक्षण कर सकते हैं:

portslist: <%= [{name: 'ob1', port_num: 0, port_type: 'network'},...].to_json.inspect %> 

और अगर आप एक बड़े JSON विनिर्देश है, तो आप इसे एक अलग फाइल में स्टोर कर सकते हैं और लोड, रूबी का उपयोग कर तो तुम साफ अपने YAML फ़ाइल रख सकते हैं: पूरा किया जा रहा रखने के लिए

portslist: <%= File.read('/path/to/file.json').inspect %> 
3

: मामले में आप ActiveRecord::Store उपयोग कर रहे हैं, तो आप बस एक ही डेटा के YAML प्रतिनिधित्व का उपयोग कर अपने डेटा लोड कर सकते हैं, यहां तक ​​कि

one: 
    portslist: 
    - 
     name: 'ob1' 
     port_num: 0 
     port_type: 'network' 
    - 
     name: 'ob2' 
     port_num: 1 
     port_type: 'network' 
0

मेरी तालिका में, स्तंभ stripe_connect प्रकार JSONB की है: अगर यह एक JSON दुकान है। स्थिरता में, यहां क्या काम किया है। ध्यान दें कि बाहरी एकल-उद्धरण आवश्यक हैं, लेकिन वर्ग ब्रैकेट नहीं हैं। एकल उद्धरण के बीच सब कुछ एक लंबी रेखा है।

stripe_connect: '{ "गुंजाइश": "read_write", "livemode": झूठे, "token_type": "वाहक", "ACCESS_TOKEN": "sk_test_madeupvalue", "refresh_token": "rt_Ae29madeupvalueyX", "stripe_user_id": "acct_103yZabcdefg", "stripe_publishable_key": "pk_test_0HEOmadeupvalue"} '

संबंधित मुद्दे