class Kiev::JSON
Constants
- FAIL_JSON
- NO_JSON
- OJ_OPTIONS
- OJ_OPTIONS_2
- OJ_OPTIONS_3
Attributes
engine[RW]
Public Class Methods
generate(obj)
click to toggle source
# File lib/kiev/json.rb, line 51 def generate(obj) if engine == :oj oj_generate(obj) elsif engine == :activesupport activesupport_generate(obj) elsif engine == :json json_generate(obj) else NO_JSON.dup end end
logstash(entry)
click to toggle source
# File lib/kiev/json.rb, line 63 def logstash(entry) entry.each do |key, value| entry[key] = if value.respond_to?(:iso8601) value.iso8601(3) elsif !scalar?(value) generate(value) elsif value.is_a?(String) && value.encoding != Encoding::UTF_8 value.encode( Encoding::UTF_8, invalid: :replace, undef: :replace, replace: "?" ) elsif value.respond_to?(:infinite?) && value.infinite? nil else value end end generate(entry) << "\n" end
Private Class Methods
activesupport_generate(obj)
click to toggle source
# File lib/kiev/json.rb, line 105 def activesupport_generate(obj) ActiveSupport::JSON.encode(obj) rescue Exception FAIL_JSON.dup end
json_generate(obj)
click to toggle source
# File lib/kiev/json.rb, line 111 def json_generate(obj) ::JSON.generate(obj, quirks_mode: true) rescue Exception FAIL_JSON.dup end
oj_generate(obj)
click to toggle source
# File lib/kiev/json.rb, line 99 def oj_generate(obj) Oj.dump(obj, OJ_OPTIONS) rescue Exception FAIL_JSON.dup end
scalar?(value)
click to toggle source
Arrays excluded here because Elastic indexes very picky: if you have array of mixed things it will complain
# File lib/kiev/json.rb, line 90 def scalar?(value) value.is_a?(String) || value.is_a?(Numeric) || value.is_a?(Symbol) || value.is_a?(TrueClass) || value.is_a?(FalseClass) || value.is_a?(NilClass) end