data() :: nil | true | false | list() | float() | integer() | String.t() | [data()] | object()
object() :: %{optional(String.t()) => data()}