@spec to_json(data :: any()) :: {:ok, json :: String.t()}
@spec to_json(data :: any(), opts :: keyword()) :: {:ok, json :: String.t()}