Class: Karafka::Parsers::Json

Inherits:
Object
  • Object
show all
Defined in:
lib/karafka/parsers/json.rb

Overview

Default Karafka Json parser for serializing and deserializing data

Class Method Summary collapse

Class Method Details

.generate(content) ⇒ String

Note:

When string is passed to this method, we assume that it is already a json string and we don’t serialize it again. This allows us to serialize data before it is being forwarded to a parser if we want to have a custom (not that simple) json serialization

Returns Valid JSON string containing serialized data.

Examples:

From an ActiveRecord object

Json.generate(Repository.first) #=> "{\"repository\":{\"id\":\"04b504e0\"}}"

From a string (no changes)

Json.generate("{\"a\":1}") #=> "{\"a\":1}"

Parameters:

  • content (Object)

    any object that we want to convert to a json string

Returns:

  • (String)

    Valid JSON string containing serialized data

Raises:



31
32
33
34
35
# File 'lib/karafka/parsers/json.rb', line 31

def self.generate(content)
  return content if content.is_a?(String)
  return content.to_json if content.respond_to?(:to_json)
  raise Karafka::Errors::ParserError, content
end

.parse(content) ⇒ Hash

Returns hash with parsed JSON data.

Examples:

Json.parse("{\"a\":1}") #=> { 'a' => 1 }

Parameters:

  • content (String)

    content based on which we want to get our hash

Returns:

  • (Hash)

    hash with parsed JSON data



12
13
14
15
16
# File 'lib/karafka/parsers/json.rb', line 12

def self.parse(content)
  ::MultiJson.load(content)
rescue ::MultiJson::ParseError => e
  raise ::Karafka::Errors::ParserError, e
end