ApiBrasil.Core.JSON (APIBrasil v0.0.1)

Copy Markdown View Source

Codec JSON da SDK — sem dependência obrigatória.

O codec é escolhido em tempo de execução, na primeira chamada, e fica memorizado em :persistent_term:

  1. Jason, se estiver no projeto;
  2. JSON, nativo do Elixir 1.18+;
  3. :json, nativo do Erlang/OTP 27+.

Só é preciso adicionar o :jason ao projeto em versões anteriores a Elixir 1.18 / OTP 27.

Summary

Types

Termo compatível com JSON: mapa, lista, string, número, booleano ou nil.

Functions

Informa qual codec está em uso — Jason, JSON ou :json.

Decodifica uma string JSON.

Codifica um termo em JSON.

Types

json()

@type json() :: map() | list() | String.t() | number() | boolean() | nil

Termo compatível com JSON: mapa, lista, string, número, booleano ou nil.

Functions

codec_name()

@spec codec_name() :: module() | :json

Informa qual codec está em uso — Jason, JSON ou :json.

Útil para diagnosticar o ambiente.

decode(binary)

@spec decode(binary()) :: {:ok, json()} | {:error, term()}

Decodifica uma string JSON.

Objetos viram mapas com chaves binárias — o mesmo formato em todos os codecs suportados.

encode!(term)

@spec encode!(term()) :: binary()

Codifica um termo em JSON.

Levanta se o termo não for serializável.