-
Notifications
You must be signed in to change notification settings - Fork 76
/
Copy pathsimdjson-is-valid.xml
187 lines (176 loc) · 6.22 KB
/
simdjson-is-valid.xml
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
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
<?xml version="1.0" encoding="utf-8"?>
<!-- EN-Revision: 3f3362ebcdd1a27cf9c9c751dd5cbe8a6264d1c3 Maintainer: sergey Status: ready -->
<!-- Reviewed: no -->
<refentry xml:id="function.simdjson-is-valid" xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink">
<refnamediv>
<refname>simdjson_is_valid</refname>
<refpurpose>Проверяет, является ли строка JSON корректной</refpurpose>
</refnamediv>
<refsect1 role="description">
&reftitle.description;
<methodsynopsis>
<type>bool</type><methodname>simdjson_is_valid</methodname>
<methodparam><type>string</type><parameter>json</parameter><initializer>&false;</initializer></methodparam>
<methodparam choice="opt"><type>int</type><parameter>depth</parameter><initializer>512</initializer></methodparam>
</methodsynopsis>
<para>
Принимает строку, закодированную в JSON и возвращает true, если она корректная.
</para>
</refsect1>
<refsect1 role="parameters">
&reftitle.parameters;
<variablelist>
<varlistentry>
<term><parameter>json</parameter></term>
<listitem>
<para>
Строка (<type>string</type>) в формате <parameter>json</parameter> для проверки.
</para>
<para>
Функция работает только со строками в кодировке UTF-8.
</para>
<para>
Функция анализирует допустимые входные данные, которые функция <function>json_decode</function>
может декодировать, при условии, что их длина не превышает 4 Гб.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term><parameter>depth</parameter></term>
<listitem>
<para>
Максимальная глубина вложенности декодируемой структуры.
Значение должно быть больше <literal>0</literal> и меньше или равно <literal>2147483647</literal>.
Вызывающие команды должны использовать достаточно маленькие значения,
поскольку большая глубина требуют больше места в буфере и увеличивают глубину рекурсии,
в отличие от текущей реализации функции <function>json_decode</function>.
</para>
</listitem>
</varlistentry>
</variablelist>
</refsect1>
<refsect1 role="returnvalues">
&reftitle.returnvalues;
<para>
Возвращает &true;, если параметр <parameter>json</parameter> является корректной
строкой JSON, в противном случае возвращает &false;.
</para>
</refsect1>
<refsect1 role="errors">
&reftitle.errors;
<para>
Если параметр <parameter>json</parameter> больше 4 ГБ, то начиная с версии PECL simdjson 2.1.0
выбрасывается исключение <classname>SimdJsonException</classname>;
ранее выбрасывалось исключение <classname>RuntimeException</classname>.
</para>
<para>
Если параметр <parameter>depth</parameter> находится вне допустимого диапазона,
то начиная с версии PECL simdjson 3.0.0 выбрасывается исключение <classname>SimdJsonValueError</classname>,
тогда как ранее выдавалась ошибка уровня <constant>E_WARNING</constant>.
</para>
</refsect1>
<refsect1 role="examples">
&reftitle.examples;
<para>
<example>
<title>Пример использования <function>simdjson_decode</function></title>
<programlisting role="php">
<![CDATA[
<?php
$json = '{"a":1,"b":2,"c":3}';
$invalidJson = '{"a":1,"b":2,"c":';
var_dump(simdjson_is_valid($json));
var_dump(simdjson_is_valid($invalidJson));
?>
]]>
</programlisting>
&example.outputs;
<screen>
<![CDATA[
bool(true)
bool(false)
]]>
</screen>
</example>
<example>
<title>Ошибки <parameter>depth</parameter></title>
<programlisting role="php">
<![CDATA[
<?php
// Кодирование данных с максимальной глубиной 4
// (array -> array -> array -> string)
$json = json_encode(
[
1 => [
'English' => [
'One',
'January'
],
'French' => [
'Une',
'Janvier'
]
]
]
);
// Отображает ошибки для разных глубин.
var_dump(simdjson_is_valid($json, 4));
var_dump(simdjson_is_valid($json, 3));
?>
]]>
</programlisting>
&example.outputs;
<screen>
<![CDATA[
bool(true)
bool(false)
]]>
</screen>
</example>
</para>
</refsect1>
<refsect1 role="notes">
&reftitle.notes;
<note>
<para>
Спецификация JSON - это не JavaScript, а подмножество JavaScript.
</para>
</note>
<note>
<para>
В случае возникновения ошибки декодирования выбрасывается исключение <classname>SimdJsonException</classname>,
а <methodname>SimdJsonException::getCode</methodname> и <methodname>SimdJsonException::getMessage</methodname>
могут быть использованы для определения точной природы ошибки.
</para>
</note>
</refsect1>
<refsect1 role="seealso">
&reftitle.seealso;
<para>
<simplelist>
<member><function>json_encode</function></member>
<member><function>json_decode</function></member>
</simplelist>
</para>
</refsect1>
</refentry>
<!-- Keep this comment at the end of the file
Local variables:
mode: sgml
sgml-omittag:t
sgml-shorttag:t
sgml-minimize-attributes:nil
sgml-always-quote-attributes:t
sgml-indent-step:1
sgml-indent-data:t
indent-tabs-mode:nil
sgml-parent-document:nil
sgml-default-dtd-file:"~/.phpdoc/manual.ced"
sgml-exposed-tags:nil
sgml-local-catalogs:nil
sgml-local-ecat-files:nil
End:
vim600: syn=xml fen fdm=syntax fdl=2 si
vim: et tw=78 syn=sgml
vi: ts=1 sw=1
-->