JSON Pointer v2.2.0 JSONPointer View Source
Link to this section Summary
Functions
Applies a mapping of source paths to destination paths in the result
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
Ensures that the given list has size number of elements
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 ## Examples
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
Unescapes a reference token
Link to this section Types
Link to this section Functions
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.apply( %{ “a”=>4, “b”=>%{ “c” => true }}, [ {“/b/c”, “/valid”}, {“/a”,”/count”, fn val -> val*2 end} ] ) %{“count” => 8, “valid” => true}
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}] }
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}]
ensure_list_size(list(), non_neg_integer()) :: list()
Ensures that the given list has size number of elements
## Examples
iex> JSONPointer.ensure_list_size( [], 2 )
[nil, nil]
Escapes a reference token
## Examples
iex> JSONPointer.escape "hello~bla"
"hello~0bla"
iex> JSONPointer.escape "hello/bla"
"hello~1bla"
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"}
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
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()) :: {: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(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()) :: 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!(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”]} }
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”] )
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”]
Converts a JSON pointer into a list of reference tokens
## Examples
iex> JSONPointer.parse("/fridge/butter")
{:ok, [ "fridge", "butter"] }
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}}
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"}
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"}
Unescapes a reference token
## Examples
iex> JSONPointer.unescape "hello~0bla"
"hello~bla"
iex> JSONPointer.unescape "hello~1bla"
"hello/bla"