Skip to content

Commit 074c64d

Browse files
committed
allow to map atoms to other values to handle null -> nil
1 parent 492160e commit 074c64d

File tree

2 files changed

+7
-0
lines changed

2 files changed

+7
-0
lines changed

lib/poison/encoder.ex

+5
Original file line numberDiff line numberDiff line change
@@ -74,6 +74,11 @@ defimpl Poison.Encoder, for: Atom do
7474
def encode(true, _), do: "true"
7575
def encode(false, _), do: "false"
7676

77+
def encode(atom, %{force: mapping} = options) do
78+
value = Map.get(mapping, atom, Atom.to_string(atom))
79+
Poison.Encoder.encode(value, Map.delete(options, :force))
80+
end
81+
7782
def encode(atom, options) do
7883
Poison.Encoder.BitString.encode(Atom.to_string(atom), options)
7984
end

test/poison/encoder_test.exs

+2
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,8 @@ defmodule Poison.EncoderTest do
88
assert to_json(true) == "true"
99
assert to_json(false) == "false"
1010
assert to_json(:poison) == ~s("poison")
11+
assert to_json(:null) == ~s("null")
12+
assert to_json(:null, force: %{null: nil}) == "null"
1113
end
1214

1315
test "Integer" do

0 commit comments

Comments
 (0)