1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
|
<?php
namespace Safe;
use Safe\Exceptions\JsonException;
/**
* Returns a string containing the JSON representation of the supplied
* value.
*
* The encoding is affected by the supplied options
* and additionally the encoding of float values depends on the value of
* serialize_precision.
*
* @param mixed $value The value being encoded. Can be any type except
* a resource.
*
* All string data must be UTF-8 encoded.
*
* PHP implements a superset of JSON as specified in the original
* RFC 7159.
* @param int $options Bitmask consisting of
* JSON_FORCE_OBJECT,
* JSON_HEX_QUOT,
* JSON_HEX_TAG,
* JSON_HEX_AMP,
* JSON_HEX_APOS,
* JSON_INVALID_UTF8_IGNORE,
* JSON_INVALID_UTF8_SUBSTITUTE,
* JSON_NUMERIC_CHECK,
* JSON_PARTIAL_OUTPUT_ON_ERROR,
* JSON_PRESERVE_ZERO_FRACTION,
* JSON_PRETTY_PRINT,
* JSON_UNESCAPED_LINE_TERMINATORS,
* JSON_UNESCAPED_SLASHES,
* JSON_UNESCAPED_UNICODE,
* JSON_THROW_ON_ERROR.
* The behaviour of these constants is described on the
* JSON constants page.
* @param int $depth Set the maximum depth. Must be greater than zero.
* @return string Returns a JSON encoded string on success.
* @throws JsonException
*
*/
function json_encode($value, int $options = 0, int $depth = 512): string
{
error_clear_last();
$result = \json_encode($value, $options, $depth);
if ($result === false) {
throw JsonException::createFromPhpError();
}
return $result;
}
/**
* Returns the error string of the last json_encode or json_decode
* call, which did not specify JSON_THROW_ON_ERROR.
*
* @return string Returns the error message on success, "No error" if no
* error has occurred.
* @throws JsonException
*
*/
function json_last_error_msg(): string
{
error_clear_last();
$result = \json_last_error_msg();
if ($result === false) {
throw JsonException::createFromPhpError();
}
return $result;
}
|