simdjson_is_valid

(PECL simdjson >= 2.0.0)

simdjson_is_valid β€” ΠŸΡ€ΠΎΠ²Π΅Ρ€ΡΠ΅Ρ‚, ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½Π° Π»ΠΈ JSON-строка

ОписаниС

function simdjson_is_valid(string $json, int $depth = 512): bool

Ѐункция ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Π΅Ρ‚ строку Π² Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π΅ JSON ΠΈ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ true, Ссли Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ Π΄Π°Π½Π½Ρ‹Ρ… ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π΅Π½.

Бписок ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ²

json
Π‘Ρ‚Ρ€ΠΎΠΊΠ° (string) Π² Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π΅ json для ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ. Ѐункция Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ со строками Π² ΠΊΠΎΠ΄ΠΈΡ€ΠΎΠ²ΠΊΠ΅ UTF-8. Ѐункция Π°Π½Π°Π»ΠΈΠ·ΠΈΡ€ΡƒΠ΅Ρ‚ Π²Ρ…ΠΎΠ΄Π½Ρ‹Π΅ Π΄Π°Π½Π½Ρ‹Π΅, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΡƒΠΌΠ΅Π΅Ρ‚ Π΄Π΅ΠΊΠΎΠ΄ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ функция json_decode(), ΠΏΡ€ΠΈ условии, Ρ‡Ρ‚ΠΎ Π΄Π»ΠΈΠ½Π° Π΄Π°Π½Π½Ρ‹Ρ… Π½Π΅ ΠΏΡ€Π΅Π²Ρ‹ΡˆΠ°Π΅Ρ‚ 4 Π“ΠΈΠ‘.
depth
Максимальная Π³Π»ΡƒΠ±ΠΈΠ½Π° влоТСнности Π΄Π΅ΠΊΠΎΠ΄ΠΈΡ€ΡƒΠ΅ΠΌΠΎΠΉ структуры. ΠŸΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Π΅Ρ‚ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ большС 0 ΠΈ мСньшС ΠΈΠ»ΠΈ Ρ€Π°Π²Π½ΠΎ 2_147_483_647. Π’Ρ‹Π·Ρ‹Π²Π°ΡŽΡ‰Π΅ΠΉ сторонС Π»ΡƒΡ‡ΡˆΠ΅ ΡƒΠΊΠ°Π·Ρ‹Π²Π°Ρ‚ΡŒ Ρ€Π°Π·ΡƒΠΌΠ½Ρ‹Π΅ малСнькиС значСния, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ большая Π³Π»ΡƒΠ±ΠΈΠ½Π° Ρ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚ большС мСста Π² Π±ΡƒΡ„Π΅Ρ€Π΅ ΠΈ ΡƒΠ²Π΅Π»ΠΈΡ‡ΠΈΠ²Π°Π΅Ρ‚ Π³Π»ΡƒΠ±ΠΈΠ½Ρƒ рСкурсии, Π² ΠΎΡ‚Π»ΠΈΡ‡ΠΈΠ΅ ΠΎΡ‚ Ρ‚Π΅ΠΊΡƒΡ‰Π΅ΠΉ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ json_decode().

Π’ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅ΠΌΡ‹Π΅ значСния

Ѐункция Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ true, Ссли Π² ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ json ΠΏΠ΅Ρ€Π΅Π΄Π°Π»ΠΈ ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½ΡƒΡŽ JSON-строку, ΠΈΠ½Π°Ρ‡Π΅ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ false.

Ошибки

Начиная с вСрсии PECL simdjson 2.1.0 функция выбрасываСт ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ SimdJsonException, Ссли Π² ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ json ΠΏΠ΅Ρ€Π΅Π΄Π°Π»ΠΈ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ большС 4 Π“ΠΈΠ‘; Ρ€Π°Π½ΡŒΡˆΠ΅ функция выбрасывала ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ RuntimeException.

Начиная с вСрсии PECL simdjson 3.0.0 функция выбрасываСт ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ SimdJsonValueError, Ссли Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π° depth Π²Ρ‹Ρ…ΠΎΠ΄ΠΈΡ‚ Π·Π° ΠΏΡ€Π΅Π΄Π΅Π»Ρ‹ допустимого Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½Π°; Ρ€Π°Π½ΡŒΡˆΠ΅ функция Π²Ρ‹Π΄Π°Π²Π°Π»Π° ΠΎΡˆΠΈΠ±ΠΊΡƒ уровня E_WARNING.

ΠŸΡ€ΠΈΠΌΠ΅Ρ€Ρ‹

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ #1 ΠŸΡ€ΠΈΠΌΠ΅Ρ€ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ коррСктности JSON-строки Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠ΅ΠΉ simdjson_decode()

<?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));

?>

Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ выполнСния ΠΏΡ€ΠΈΠ²Π΅Π΄Ρ‘Π½Π½ΠΎΠ³ΠΎ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π°:

bool(true)
bool(false)

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ #2 ΠžΡˆΠΈΠ±ΠΎΡ‡Π½Ρ‹Π΅ значСния ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π° depth

<?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));

?>

Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ выполнСния ΠΏΡ€ΠΈΠ²Π΅Π΄Ρ‘Π½Π½ΠΎΠ³ΠΎ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π°:

bool(true)
bool(false)

ΠŸΡ€ΠΈΠΌΠ΅Ρ‡Π°Π½ΠΈΡ

Π—Π°ΠΌΠ΅Ρ‡Π°Π½ΠΈΠ΅: БпСцификация JSON β€” Π½Π΅ язык программирования JavaScript, Π° подмноТСство JavaScript-синтаксиса.

Π—Π°ΠΌΠ΅Ρ‡Π°Π½ΠΈΠ΅: Ѐункция выбрасываСт ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ SimdJsonException, Ссли Π²ΠΎΠ·Π½ΠΈΠΊΠ»Π° ошибка. ΠœΠ΅Ρ‚ΠΎΠ΄Ρ‹ SimdJsonException::getCode() ΠΈ SimdJsonException::getMessage() ΠΏΠΎΠΌΠΎΠ³Π°ΡŽΡ‚ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ Ρ‚ΠΎΡ‡Π½ΡƒΡŽ ΠΏΡ€ΠΈΡ€ΠΎΠ΄Ρƒ ошибки.

Π‘ΠΌΠΎΡ‚Ρ€ΠΈΡ‚Π΅ Ρ‚Π°ΠΊΠΆΠ΅

  • json_encode() - Π’ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ JSON-прСдставлСниС Π΄Π°Π½Π½Ρ‹Ρ…
  • json_decode() - Π”Π΅ΠΊΠΎΠ΄ΠΈΡ€ΡƒΠ΅Ρ‚ строку JSON
οΌ‹Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ

ΠŸΡ€ΠΈΠΌΠ΅Ρ‡Π°Π½ΠΈΡ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ

ΠŸΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΠΈ Π΅Ρ‰Ρ‘ Π½Π΅ добавляли примСчания для страницы