লেভেনটিক্স, আপনার উত্তরের জন্য আপনাকে ধন্যবাদ।
Marshal.load (Marshal.dump (জ)) কারণ এটি মূল চাবি ধরনের অপরিবর্তিত পদ্ধতি সম্ভবত বিভিন্ন পদ্ধতি অধিকাংশ অখণ্ডতা হয়েছে যাও recursively ।
স্ট্রিং এবং সিম্বল কীগুলির মিশ্রণের সাথে আপনার নেস্টেড হ্যাশ রয়েছে এবং আপনি সেই মিশ্রণটি ডিকোডের উপরে সংরক্ষণ করতে চান (উদাহরণস্বরূপ, যদি আপনার হ্যাশটিতে অত্যন্ত জটিল / নেস্টেড তৃতীয় ছাড়াও আপনার নিজস্ব কাস্টম অবজেক্ট থাকে তবে এটি ঘটতে পারে পার্টির অবজেক্টস যার কীগুলি আপনি কোনও প্রকল্পের সময়সীমাবদ্ধতার মতো যেকোন কারণেই হেরফের / রূপান্তর করতে পারবেন না)।
উদাহরণ:
h = {
:youtube => {
:search => 'daffy', # nested symbol key
'history' => ['goofy', 'mickey'] # nested string key
}
}
পদ্ধতি 1 : JSON.parse - সমস্ত কী পুনরাবৃত্তভাবে প্রতীকী => মূল মিশ্রণ সংরক্ষণ করে না
JSON.parse( h.to_json, {:symbolize_names => true} )
=> { :youtube => { :search=> "daffy", :history => ["goofy", "mickey"] } }
পদ্ধতি 2 : অ্যাক্টিভসপোর্ট :: জেএসএন.ডেকোড - কেবলমাত্র শীর্ষ স্তরের কীগুলি প্রতীকী>> মূল মিশ্রণ সংরক্ষণ করে না
ActiveSupport::JSON.decode( ActiveSupport::JSON.encode(h) ).symbolize_keys
=> { :youtube => { "search" => "daffy", "history" => ["goofy", "mickey"] } }
পদ্ধতি 3 : মার্শাল.লোড - নেস্টেড কীগুলিতে মূল স্ট্রিং / প্রতীক মিশ্রণ সংরক্ষণ করে। পারফেক্ট!
Marshal.load( Marshal.dump(h) )
=> { :youtube => { :search => "daffy", "history" => ["goofy", "mickey"] } }
আমি অজানা এমন কোনও অপ্রতুলতা না থাকলে, আমি মনে করি পদ্ধতি 3টি যাওয়ার উপায়।
চিয়ার্স
http://stackoverflow.com/a/43773159/1297435
4.1 রেলের জন্য এটি ব্যবহার করে দেখুন