0

Ruby を学んでいて、Ruby オブジェクトを json にシリアライズする方法を考えています。私は ActiveSupport やその他の gem を使用していますが、これを行う最善の方法は何ですか? 次のアプローチは機能せず、失敗します

BinaryTree.rb:4:in `require': no such file to load -- json (LoadError)

私の質問は、何をインストールし、どの require ステートメントを使用する必要があるかということです。

 #!/usr/bin/env ruby

 require 'pp'
 require 'json'

 class BinaryTree

     attr_accessor :key, :value, :left, :right

     def initialize(key=nil,value=nil, left=nil, right=nil)
         @key, @value, @left, @right = key, value, left, right
     end

     def insert(key,value)
         if @key.nil?
             @key = key
             return @value = value
         end

         if key == @key
             return @value = value
         end

         if key > @key
             if @right.nil?
                 @right = BinaryTree.new
             end
             return @right.insert(key, value)
         end

         if @left.nil?
             @left = BinaryTree.new
         end
         return @left.insert(key, value)
     end
 end

 if __FILE__ == $0
     bt = BinaryTree.new
     bt.insert(5,2)
     bt.insert(4,5)
     bt.insert(6,3)
     bt.insert(9,7)
     bt.insert(8,9)
     pp bt
     puts JSON.encode(bt)
end
4

1 に答える 1

1

jsongem はインストールされていますか?そうでない場合は、最初にそれを使用してインストールする必要がありますgem install json。インストールしたら、次のようなことができるはずです。

File.open('output_file', 'w') do |f|
  f.write(JSON.encode(bt))
end

File.openAPI をブロックで使用すると#close、後でファイル インスタンスが処理されるため便利です。

アップデート

Ruby 1.8 以前を使用している場合は、最初に以下を使用して Rubygems をセットアップする必要があります。

require 'rubygems'
gem 'json'
require 'json'

puts ['test'].to_json
于 2013-03-16T23:09:54.797 に答える