JSON Pointer v2.5.0 JSONPointer View Source
Link to this section Summary
Functions
Extracts a list of JSON pointer paths from the given object
Extracts a list of JSON pointer paths from the given object, raises an error on exception
Escapes a reference token
Retrieves the value indicated by the pointer from the object
Retrieves the value indicated by the pointer from the object, raises an error on exception
Tests if an object has a value for a JSON pointer
Returns the given list of paths applied to a container
Applies the given list of paths to the given container
Returns the given list of paths applied to a container, raises an exception on error
Applies the given list of paths to the given container, raises an exception on error
Merges the incoming dst object into src
Merges the incoming dst object into src, raises an error on exception
Converts a JSON pointer into a list of reference tokens
Removes an attribute of object referenced by pointer
Sets a new value on object at the location described by pointer
Sets a new value on object at the location described by pointer, raises an error on exception
Applies a mapping of source paths to destination paths in the result
Applies a mapping of source paths to destination paths in the result, raises an error on exception
Unescapes a reference token
Link to this section Types
container() View Source
error_message()
View Source
error_message() :: {:error, msg()}
error_message() :: {:error, msg()}
existing()
View Source
existing() :: t()
existing() :: t()
input()
View Source
input() :: map()
input() :: map()
msg()
View Source
msg() :: String.t()
msg() :: String.t()
pointer() View Source
pointer_list() View Source
removed()
View Source
removed() :: t()
removed() :: t()
Link to this section Functions
dehydrate(object)
View Source
dehydrate(input()) :: {:ok, pointer_list()} | error_message()
dehydrate(input()) :: {:ok, pointer_list()} | error_message()
Extracts a list of JSON pointer paths from the given object
Examples
iex> JSONPointer.dehydrate( %{"a"=>%{"b"=>["c","d"]}} )
{:ok, [{"/a/b/0", "c"}, {"/a/b/1", "d"}] }
iex> JSONPointer.dehydrate( %{"a"=>[10, %{"b"=>12.5}], "c"=>99} )
{:ok, [{"/a/0", 10}, {"/a/1/b", 12.5}, {"/c", 99}] }
dehydrate!(object)
View Source
dehydrate!(input()) :: pointer_list()
dehydrate!(input()) :: pointer_list()
Extracts a list of JSON pointer paths from the given object, raises an error on exception
Examples
iex> JSONPointer.dehydrate!( %{"a"=>%{"b"=>["c","d"]}} )
[{"/a/b/0", "c"}, {"/a/b/1", "d"}]
iex> JSONPointer.dehydrate!( %{"a"=>[10, %{"b"=>12.5}], "c"=>99} )
[{"/a/0", 10}, {"/a/1/b", 12.5}, {"/c", 99}]
escape(str) View Source
Escapes a reference token
Examples
iex> JSONPointer.escape "hello~bla"
"hello~0bla"
iex> JSONPointer.escape "hello/bla"
"hello~1bla"
get(obj, pointer)
View Source
get(input(), pointer()) :: {:ok, t()} | error_message()
get(input(), pointer()) :: {:ok, t()} | error_message()
Retrieves the value indicated by the pointer from the object
Examples
iex> JSONPointer.get( %{ "fridge" => %{ "door" => "milk" } }, "/fridge/door" )
{:ok, "milk"}
iex> JSONPointer.get( %{ "contents" => [ "milk", "butter", "eggs" ]}, "/contents/2" )
{:ok, "eggs"}
iex> JSONPointer.get( %{ "milk" => true, "butter" => false}, "/cornflakes" )
{:error, "token not found: cornflakes"}
iex> JSONPointer.get( %{ "contents" => [ "milk", "butter", "eggs" ]}, "/contents/4" )
{:error, "list index out of bounds: 4"}
get!(obj, pointer) View Source
Retrieves the value indicated by the pointer from the object, raises an error on exception
Examples
iex> JSONPointer.get!( %{}, "/fridge/milk" )
** (ArgumentError) json pointer key not found: fridge
has(obj, pointer) View Source
Tests if an object has a value for a JSON pointer
Examples
iex> JSONPointer.has( %{ "milk" => true, "butter" => false}, "/butter" )
true
iex> JSONPointer.has( %{ "milk" => true, "butter" => false}, "/cornflakes" )
false
hydrate(pointer_list)
View Source
hydrate(pointer_list()) :: {:ok, container()} | error_message()
hydrate(pointer_list()) :: {:ok, container()} | error_message()
Returns the given list of paths applied to a container
Examples
iex> JSONPointer.hydrate( [ {"/a/1/b", "single"} ] )
{:ok, %{"a" => %{"1" => %{"b" => "single"}}}}
hydrate(obj, pointer_list)
View Source
hydrate(container(), pointer_list()) :: {:ok, container()} | error_message()
hydrate(container(), pointer_list()) :: {:ok, container()} | error_message()
Applies the given list of paths to the given container
Examples
iex> JSONPointer.hydrate( %{}, [ {"/a/b/1", "find"} ] )
{:ok, %{"a"=>%{"b"=>[nil,"find"]} } }
hydrate!(pointer_list)
View Source
hydrate!(pointer_list()) :: container() | no_return()
hydrate!(pointer_list()) :: container() | no_return()
Returns the given list of paths applied to a container, raises an exception on error
Examples
iex> JSONPointer.hydrate!( [ {"/a/b/1", "find"} ] )
%{"a"=>%{"b"=>[nil,"find"]} }
hydrate!(obj, pointer_list)
View Source
hydrate!(container(), pointer_list()) :: container() | no_return()
hydrate!(container(), pointer_list()) :: container() | no_return()
Applies the given list of paths to the given container, raises an exception on error
Examples
iex> JSONPointer.hydrate!( %{}, [ {"/a/b/1", "find"} ] )
%{"a"=>%{"b"=>[nil,"find"]} }
merge(src, dst) View Source
Merges the incoming dst object into src
Examples
iex> JSONPointer.merge( %{"a"=>1}, %{"b"=>2} )
{:ok, %{"a"=>1,"b"=>2} }
iex> JSONPointer.merge( ["foo", "bar"], ["baz"] )
{:ok, ["baz", "bar"]}
merge!(src, dst) View Source
Merges the incoming dst object into src, raises an error on exception
Examples
iex> JSONPointer.merge!( %{"a"=>1}, %{"b"=>2} )
%{"a"=>1,"b"=>2}
iex> JSONPointer.merge!( ["foo", "bar"], ["baz"] )
["baz", "bar"]
parse(pointer) View Source
Converts a JSON pointer into a list of reference tokens
Examples
iex> JSONPointer.parse("/fridge/butter")
{:ok, [ "fridge", "butter"] }
remove(object, pointer)
View Source
remove(input(), pointer()) :: {:ok, t(), removed()} | error_message()
remove(input(), pointer()) :: {:ok, t(), removed()} | error_message()
Removes an attribute of object referenced by pointer
Examples
iex> JSONPointer.remove( %{"fridge" => %{ "milk" => true, "butter" => true}}, "/fridge/butter" )
{:ok, %{"fridge" => %{"milk"=>true}}, true }
iex> JSONPointer.remove( %{"fridge" => %{ "milk" => true, "butter" => true}}, "/fridge/sandwich" )
{:error, "json pointer key not found: sandwich", %{ "butter" => true, "milk" => true}}
set(obj, pointer, value) View Source
Sets a new value on object at the location described by pointer
Examples
iex> JSONPointer.set( %{}, "/example/msg", "hello")
{:ok, %{ "example" => %{ "msg" => "hello" }}, nil }
iex> JSONPointer.set( %{}, "/fridge/contents/1", "milk" )
{:ok, %{"fridge" => %{"contents" => [nil, "milk"]}}, nil }
iex> JSONPointer.set( %{"milk"=>"full"}, "/milk", "empty")
{:ok, %{"milk" => "empty"}, "full"}
set!(obj, pointer, value) View Source
Sets a new value on object at the location described by pointer, raises an error on exception
Examples
iex> JSONPointer.set!( %{}, "/example/msg", "hello")
%{ "example" => %{ "msg" => "hello" }}
iex> JSONPointer.set!( %{}, "/fridge/contents/1", "milk" )
%{"fridge" => %{"contents" => [nil, "milk"]}}
iex> JSONPointer.set!( %{"milk"=>"full"}, "/milk", "empty")
%{"milk" => "empty"}
transform(src, mapping) View Source
Applies a mapping of source paths to destination paths in the result
The mapping can optionally include a function which transforms the source value before it is applied to the result.
Examples
iex> JSONPointer.transform( %{ "a"=>4, "b"=>%{ "c" => true }}, [ {"/b/c", "/valid"}, {"/a","/count", fn val -> val*2 end} ] )
{:ok, %{"count" => 8, "valid" => true}}
transform!(src, mapping) View Source
Applies a mapping of source paths to destination paths in the result, raises an error on exception
The mapping can optionally include a function which transforms the source value before it is applied to the result.
Examples
iex> JSONPointer.transform!( %{ "a"=>5, "b"=>%{ "is_valid" => true }}, [ {"/b/is_valid", "/valid"}, {"/a","/count", fn val -> val*2 end} ] )
%{"count" => 10, "valid" => true}
unescape(str) View Source
Unescapes a reference token
Examples
iex> JSONPointer.unescape "hello~0bla"
"hello~bla"
iex> JSONPointer.unescape "hello~1bla"
"hello/bla"