Class: Kiev::JSON
- Inherits:
-
Object
- Object
- Kiev::JSON
- Defined in:
- lib/kiev/json.rb,
lib/kiev/json.rb
Constant Summary collapse
- OJ_OPTIONS_3 =
{ mode: :rails, use_as_json: true, use_to_json: true }
- OJ_OPTIONS_2 =
do not do freeze for Oj3 and Rails 4.1
{ float_precision: 16, bigdecimal_as_decimal: false, nan: :null, time_format: :xmlschema, second_precision: 3, mode: :compat, use_as_json: true, use_to_json: true }.freeze
- OJ_OPTIONS =
(Oj::VERSION) && Oj::VERSION >= "3") ? OJ_OPTIONS_3 : OJ_OPTIONS_2
- FAIL_JSON =
"{\"error_json\":\"failed to generate json\"}"
- NO_JSON =
"{\"error_json\":\"no json backend\"}"
Class Attribute Summary collapse
-
.engine ⇒ Object
Returns the value of attribute engine.
Class Method Summary collapse
Class Attribute Details
.engine ⇒ Object
Returns the value of attribute engine.
8 9 10 |
# File 'lib/kiev/json.rb', line 8 def engine @engine end |
Class Method Details
.generate(obj) ⇒ Object
51 52 53 54 55 56 57 58 59 60 61 |
# 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) ⇒ Object
63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 |
# 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 |