Skip to content
/ jazz Public
forked from meh/jazz

Yet another library to handle JSON in Elixir.

Notifications You must be signed in to change notification settings

MCRedJay/jazz

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

73 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

jazz - JSON handling library for Elixir

Jazz is a JSON handling library written in Elixir, for Elixir.

Examples

JSON.encode!([name: "David", surname: "Davidson"])
  |> IO.puts # => {"name":"David","surname":"Davidson"}

JSON.decode!(%S/{"name":"David","surname":"Davidson"}/)
  |> IO.inspect # => [{ "name", "David" }, { "surname", "Davidson" }]

JSON.decode!(%S/{"name":"David","surname":"Davidson"}/, keys: :atoms)
  |> IO.inspect # => [name: "David", surname: "Davidson"]

# would raise if the keys weren't already existing atoms
JSON.decode!(%S/{"name":"David","surname":"Davidson"}/, keys: :atoms!)
  |> IO.inspect # => [name: "David", surname: "Davidson"]

defrecord Person, name: nil, surname: nil

JSON.encode!(Person[name: "David", surname: "Davidson"])
  |> IO.puts # => {"name":"David","surname":"Davidson"}

JSON.decode!(%S/{"name":"David","surname":"Davidson"}/, as: Person)
  |> IO.inspect # => Person[name: "David", surname: "Davidson"]

defimpl JSON.Encoder, for: HashDict do
  def to_json(self, options) do
    HashDict.to_list(self)
  end
end

defimpl JSON.Decoder, for: HashDict do
  def from_json({ _, parsed, _ }) do
    HashDict.new(parsed)
  end
end

JSON.encode!(HashDict.new([name: "David", surname: "Davidson"]))
  |> IO.puts # => {"name":"David","surname":"Davidson"}

JSON.decode!(%S/{"name":"David","surname":"Davidson"}/, as: HashDict)
  |> IO.inspect # => #HashDict<[{"name", "David" }, { "surname", "Davidson" }]>

Why yet another JSON library?

Because I need it and I need it with these features, like it? Use it. Don't like it? Don't use it.

About

Yet another library to handle JSON in Elixir.

Resources

Stars

Watchers

Forks

Packages

No packages published

Languages

  • Elixir 100.0%