# &adminguide;

## Overview

This is a simple module allowing to retrieve values from a JSON string.

For more complex operations with JSON documents, see the JANSSON module.

## Dependencies

### &kamailio; Modules

The following modules must be loaded before this module:

- None

### External Libraries or Applications

The following libraries or applications must be installed before running &kamailio; with this module loaded:

- libjson (https://github.com/json-c/json-c/wiki)

## Functions

### `json_get_field(json_string, field_name, destination)`

Copy field 'field_name' from json object 'json_string' and store it in pvar 'destination'.

Note that the result is the string representation of that JSON filed. For example, if you want to retrieve a field that has a string value, then the result is the value enclosed in quotes. If the field value is a structure, then the result is the string-formatted representation of that structure.

#### `json_get_field` usage

    ...
    json_get_field("{'foo':'bar'}", "foo", "$var(foo)");
    xlog("foo is $var(foo)");
    ...

### `json_get_string(json_string, field_name, destination)`

Copy field 'field_name' from json object 'json_string' and store it in pvar 'destination'.

#### `json_get_string` usage

    ...
    json_get_string("{'foo':'bar'}", "foo", "$var(foo)");
    xlog("foo is $var(foo)");
    ...

## Transformations

You can use the transformation to extract values from the json structured pseudo-variables

- json

  ### `json.parse` usage

      	...
      	# extract value of "Custom-Data" from $rb pseudo-variable and set it to $var(Custom-Data)
      	$var(Custom-Data) = $(rb{json.parse,Custom-Data});
      	if($var(Custom-Data) != $null) {	xlog("L_INFO", "$ci|log|custom data: $var(Custom-Data) from Request: $rb");
      	}
      	...