Sha256: 22b03fd8d2e6ef6338540425fe9b3ea7632edb1e8f775c052df0ef0cb345afe4

Contents?: true

Size: 1.6 KB

Versions: 27

Compression:

Stored size: 1.6 KB

Contents

# frozen_string_literal: true

module Karafka
  # Module for all supported by default parsers for incoming/outgoing data
  module Parsers
    # Default Karafka Json parser for serializing and deserializing data
    class Json
      # @param content [String] content based on which we want to get our hash
      # @return [Hash] hash with parsed JSON data
      # @example
      #   Json.parse("{\"a\":1}") #=> { 'a' => 1 }
      def self.parse(content)
        ::MultiJson.load(content)
      rescue ::MultiJson::ParseError => e
        raise ::Karafka::Errors::ParserError, e
      end

      # @param content [Object] any object that we want to convert to a json string
      # @return [String] Valid JSON string containing serialized data
      # @raise [Karafka::Errors::ParserError] raised when we don't have a way to parse
      #   given content to a json string format
      # @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
      #
      # @example From an ActiveRecord object
      #   Json.generate(Repository.first) #=> "{\"repository\":{\"id\":\"04b504e0\"}}"
      # @example From a string (no changes)
      #   Json.generate("{\"a\":1}") #=> "{\"a\":1}"
      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
    end
  end
end

Version data entries

27 entries across 27 versions & 1 rubygems

Version Path
karafka-1.1.0 lib/karafka/parsers/json.rb
karafka-1.1.0.alpha2 lib/karafka/parsers/json.rb
karafka-1.1.0.alpha1 lib/karafka/parsers/json.rb
karafka-1.0.1 lib/karafka/parsers/json.rb
karafka-1.0.0 lib/karafka/parsers/json.rb
karafka-1.0.0.rc1 lib/karafka/parsers/json.rb
karafka-0.6.0.rc2 lib/karafka/parsers/json.rb