1C-Bitrix 25.700.0
Загрузка...
Поиск...
Не найдено
json.php
См. документацию.
1<?php
2
3namespace Bitrix\Main\Web;
4
5use Bitrix\Main\ArgumentException;
6use JsonException;
7
8class Json
9{
10 public const DEFAULT_OPTIONS = JSON_HEX_TAG | JSON_HEX_AMP | JSON_HEX_APOS | JSON_HEX_QUOT | JSON_UNESCAPED_UNICODE | JSON_INVALID_UTF8_SUBSTITUTE;
11
22 public static function encode($data, $options = null)
23 {
24 if ($options === null)
25 {
26 $options = self::DEFAULT_OPTIONS;
27 }
28
29 try
30 {
31 $res = json_encode($data, $options | JSON_THROW_ON_ERROR);
32 }
33 catch (JsonException $e)
34 {
36 }
37
38 return $res;
39 }
40
50 public static function decode($data)
51 {
52 try
53 {
54 $res = json_decode($data, true, 512, JSON_THROW_ON_ERROR);
55 }
56 catch (JsonException $e)
57 {
59 }
60
61 return $res;
62 }
63
64 public static function validate(string $data): bool
65 {
66 // On PHP 8.3 replace to
67 // return json_validate($data);
68
69 try
70 {
71 if ($data === 'null') // consistency with json_validate
72 {
73 return true;
74 }
75
76 return json_decode(json: $data, associative: true, flags: JSON_THROW_ON_ERROR) !== null;
77 }
78 catch (JsonException)
79 {
80 return false;
81 }
82 }
83
91 protected static function convertData($data)
92 {
93 return $data;
94 }
95
105 protected static function checkException(JsonException $exception, $options = 0)
106 {
107 $e = $exception->getCode();
108
109 if ($e == JSON_ERROR_UTF8 && ($options & JSON_PARTIAL_OUTPUT_ON_ERROR))
110 {
111 return;
112 }
113
114 $message = sprintf('%s [%d]', $exception->getMessage(), $e);
116 }
117
126 protected static function throwException($e)
127 {
128 throw new ArgumentException('JSON error: ' . $e, 'data');
129 }
130}
Определения json.php:9
static throwException($e)
Определения json.php:126
const DEFAULT_OPTIONS
Определения json.php:10
static decode($data)
Определения json.php:50
static validate(string $data)
Определения json.php:64
static convertData($data)
Определения json.php:91
static encode($data, $options=null)
Определения json.php:22
static checkException(JsonException $exception, $options=0)
Определения json.php:105
$options
Определения commerceml2.php:49
$data['IS_AVAILABLE']
Определения .description.php:13
$res
Определения filter_act.php:7
$message
Определения payment.php:8