class Fluent::Plugin::SimpleJsonParser

Public Instance Methods

parse(text) { |time, record| ... } click to toggle source
# File lib/fluent/plugin/parser_simple_json.rb, line 9
def parse(text)
    r = @load_proc.call(text)
    time, record = convert_values(parse_time(r), r)
    record = record_flatten(record)
    yield time, record
  rescue @error_class, EncodingError
    yield nil, nil
end
record_flatten(record, parent = nil) click to toggle source
# File lib/fluent/plugin/parser_simple_json.rb, line 18
def record_flatten(record, parent = nil)
    flattend_record = {}
    record.each_with_index do |obj, i|
      if obj.is_a?(Array)
        k, v = obj
      else
        k, v = i, obj
      end

      key = parent ? "#{parent}#{@separator}#{k}" : k
      key = key.gsub('.', @separator)

      if v.is_a? Enumerable
        flattend_record.merge!(record_flatten(v, key))
      else
        flattend_record[key] = v
      end
    end

    flattend_record
  end