On this page
Caution
The documentation you are viewing is for an older version of this component.
Switch to the latest (v3) version.
Validators
IsJsonString
Laminas\Validator\IsJsonString
allows you to validate whether a given value is a string that will be successfully decoded by json_decode
.
Basic Usage
$validator = new Laminas\Validator\IsJsonString();
$input = '{"some":"json"}';
if ($validator->isValid($input)) {
// $input can be successfully decoded
} else {
// $input is not a valid JSON string
}
Restricting Acceptable JSON Types
json_decode
accepts numeric strings representing integers and floating point numbers, booleans, arrays and objects.
You can restrict what is considered valid input using the allow
option of the validator.
use Laminas\Validator\IsJsonString;
$validator = new IsJsonString([
'allow' => IsJsonString::ALLOW_ALL ^ IsJsonString::ALLOW_BOOL,
]);
$validator->isValid('true'); // false
The allow
option is a bit mask of the ALLOW_*
constants in IsJsonString
:
IsJsonString::ALLOW_INT
- Accept integer such as1
IsJsonString::ALLOW_FLOAT
- Accept floating-point value such as1.234
IsJsonString::ALLOW_BOOL
- Accepttrue
andfalse
IsJsonString::ALLOW_ARRAY
- Accept JSON arrays such as["One", "Two"]
IsJsonString::ALLOW_OBJECT
- Accept JSON objects such as{"Some":"Object"}
IsJsonString::ALLOW_ALL
- A convenience constant allowing all of the above (Also the default).
The allow
option also has a companion setter method setAllow
. For example, to only accept arrays and objects:
use Laminas\Validator\IsJsonString;
$validator = new IsJsonString();
$validator->setAllow(IsJsonString::ALLOW_ARRAY | IsJsonString::ALLOW_OBJECT);
$validator->isValid('1.234'); // false
Restricting Max Object or Array Nesting Level
If you wish to restrict the nesting level of arrays and objects that are considered valid, the validator accepts a maxDepth
option. The default value of this option is 512
- the same default value as json_decode
.
$validator = new Laminas\Validator\IsJsonString(['maxDepth' => 2]);
$validator->isValid('{"nested": {"object: "here"}}'); // false
Again, the max nesting level allowed has a companion setter method:
$validator = new Laminas\Validator\IsJsonString();
$validator->setMaxDepth(10);