def read(data, options = {}, &block)
      if block_given?
        options = { :symbol_keys => true }.merge!(options)
        Oj.sc_parse(StreamHandler.new(block), data, options)
      else
        to_enum(:read, data, options)
      end
    end
def read(data, options = {}, &block)
      if block_given?
        options = { :symbol_keys => true }.merge!(options)
        Oj.sc_parse(StreamHandler.new(block), data, options)
      else
        to_enum(:read, data, options)
      end
    end
Reads JSON from an IO using a streaming mechanism in Oj. Yields to the
 block, or returns {Enumerator}, of Hash (JSON objects) and
 Array (JSON arrays).

 @param      [IO]   data                             an IO-like object
 @param      [Hash] options supplemental options to Oj; default is to
             set the +:symbol_keys+ option to +true+
 @yield each completed Hash (JSON object) or completed Array (JSON array)
 @return     [Enumerator] contains an enumeration of Hash (JSON object)
             and Array (JSON array)