module OjSerializers::JsonStringEncoder
Public: Contains utility functions to render objects to JSON.
Useful to instantiate a single `JsonWriter` when rendering new serializers.
Public Class Methods
actual_encode_to_json(object, root: nil, serializer: nil, each_serializer: nil, **extras)
Alias for: encode_to_json
encode_to_json(object, root: nil, serializer: nil, each_serializer: nil, **extras)
click to toggle source
Public: Allows to use Oj::Serializer in `serializer` and `each_serializer` as with ActiveModelSerializers.
render json: items, each_serializer: ItemSerializer render json: item, serializer: ItemSerializer
Returns a JSON string.
NOTE: Unlike the default encoder, this one will use the `root` option regardless of whether a serializer is specified or not.
# File lib/oj_serializers/json_string_encoder.rb, line 17 def encode_to_json(object, root: nil, serializer: nil, each_serializer: nil, **extras) # NOTE: Serializers may override `new_json_writer` to modify the behavior. writer = (serializer || each_serializer || OjSerializers::Serializer).send(:new_json_writer) if root writer.push_object writer.push_key(root.to_s) end if serializer serializer.write_one(writer, object, extras) elsif each_serializer each_serializer.write_many(writer, object, extras) elsif object.is_a?(String) return object unless root writer.push_json(object) else writer.push_value(object) end writer.pop if root writer.to_json end
Also aliased as: actual_encode_to_json