1
0
mirror of https://github.com/php/doc-ru.git synced 2026-03-24 15:52:13 +01:00
Files
archived-doc-ru/reference/simdjson/functions/simdjson-is-valid.xml

190 lines
6.5 KiB
XML
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<?xml version="1.0" encoding="utf-8"?>
<!-- EN-Revision: 78cc29837ed269491a4fc330797c7184eca7ed2f Maintainer: sergey Status: ready -->
<!-- Reviewed: no -->
<refentry xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink" xml:id="function.simdjson-is-valid">
<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></methodparam>
<methodparam choice="opt"><type>int</type><parameter>depth</parameter><initializer>512</initializer></methodparam>
</methodsynopsis>
<simpara>
Функция принимает строку в формате JSON и возвращает значение &true;, если формат данных корректен.
</simpara>
</refsect1>
<refsect1 role="parameters">
&reftitle.parameters;
<variablelist>
<varlistentry>
<term><parameter>json</parameter></term>
<listitem>
<simpara>
Строка (<type>string</type>) в формате <parameter>json</parameter> для проверки.
</simpara>
<simpara>
Функция работает только со строками в кодировке UTF-8.
</simpara>
<simpara>
Функция анализирует входные данные, которые умеет декодировать функция <function>json_decode</function>,
при условии, что длина данных не превышает 4 ГиБ.
</simpara>
</listitem>
</varlistentry>
<varlistentry>
<term><parameter>depth</parameter></term>
<listitem>
<simpara>
Максимальная глубина вложенности декодируемой структуры.
Параметр принимает только значение, которое больше <literal>0</literal> и меньше или равно <literal>2_147_483_647</literal>.
Вызывающей стороне лучше указывать разумные маленькие значения,
поскольку большая глубина требует больше места в буфере и увеличивает глубину рекурсии,
в отличие от текущей реализации функции <function>json_decode</function>.
</simpara>
</listitem>
</varlistentry>
</variablelist>
</refsect1>
<refsect1 role="returnvalues">
&reftitle.returnvalues;
<simpara>
Функция возвращает значение &true;, если в параметр <parameter>json</parameter> передали корректную
JSON-строку, иначе возвращает значение &false;.
</simpara>
</refsect1>
<refsect1 role="errors">
&reftitle.errors;
<simpara>
Начиная с версии PECL simdjson 2.1.0 функция выбрасывает исключение <classname>SimdJsonException</classname>,
если в параметр <parameter>json</parameter> передали значение больше 4 ГиБ;
раньше функция выбрасывала исключение <classname>RuntimeException</classname>.
</simpara>
<simpara>
Начиная с версии PECL simdjson 3.0.0 функция выбрасывает исключение <classname>SimdJsonValueError</classname>,
если значение параметра <parameter>depth</parameter> выходит за пределы допустимого диапазона;
раньше функция выдавала ошибку уровня <constant>E_WARNING</constant>.
</simpara>
</refsect1>
<refsect1 role="examples">
&reftitle.examples;
<para>
<example>
<title>Пример проверки корректности JSON-строки функцией <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>
<simpara>
Спецификация JSON — не язык программирования JavaScript, а подмножество JavaScript-синтаксиса.
</simpara>
</note>
<note>
<simpara>
Функция выбрасывает исключение <classname>SimdJsonException</classname>,
если возникла ошибка.
Методы <methodname>SimdJsonException::getCode</methodname> и <methodname>SimdJsonException::getMessage</methodname>
помогают определить точную природу ошибки.
</simpara>
</note>
</refsect1>
<refsect1 role="seealso">
&reftitle.seealso;
<simplelist>
<member><function>json_encode</function></member>
<member><function>json_decode</function></member>
</simplelist>
</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
-->