PHP.mk документација

Претходно дефинирани константи

Почист и полокален преглед на PHP референцата, со задржана структура од PHP.net и подобра читливост за примери, секции и белешки.

json.constants.php PHP.net прокси Преводот е вчитан
Оригинал на PHP.net
Патека json.constants.php Локална патека за оваа страница.
Извор php.net/manual/en Оригиналниот HTML се реупотребува и локално се стилизира.
Режим Прокси + преведен приказ Кодовите, табелите и белешките остануваат читливи во истиот тек.
Претходно дефинирани константи

Референца за `json.constants.php` со подобрена типографија и навигација.

json.constants.php

Претходно дефинирани константи

Следниве константи се дефинирани од ова проширување и ќе бидат достапни само кога проширувањето е или компајлирано во PHP или динамички вчитано во време на извршување.

Следниве константи укажуваат на типот на грешка што се враќа од json_last_error() Следните константи укажуваат на типот на грешка вратена од code или зачувана како JsonException.

JSON_ERROR_NONE (int)
на
JSON_ERROR_DEPTH (int)
Не е настаната грешка.
JSON_ERROR_STATE_MISMATCH (int)
Максималната длабочина на стек е надмината.
JSON_ERROR_CTRL_CHAR (int)
Се јавува со underflow или со несовпаѓање на режимите.
JSON_ERROR_SYNTAX (int)
Грешка во контролен знак, можно е погрешно кодиран.
JSON_ERROR_UTF8 (int)
Синтаксна грешка.
JSON_ERROR_RECURSION (int)
Неправилни UTF-8 знаци, можно е погрешно кодирани. json_encode() Објектот или низата предадена на JSON_PARTIAL_OUTPUT_ON_ERROR вклучува рекурзивни референци и не може да се кодира. Ако null опцијата беше дадена,
JSON_ERROR_INF_OR_NAN (int)
ќе биде кодиран на местото на рекурзивната референца. json_encode() Вредноста предадена на NAN or INFвредности (по редослед од најмалку до најмоќна) се валидни: JSON_PARTIAL_OUTPUT_ON_ERROR вклучува рекурзивни референци и не може да се кодира. Ако 0 вклучува или
JSON_ERROR_UNSUPPORTED_TYPE (int)
ќе бидат кодирани на местото на овие специјални броеви. json_encode()Вредност од неподдржан тип беше дадена на resourceвредности (по редослед од најмалку до најмоќна) се валидни: JSON_PARTIAL_OUTPUT_ON_ERROR вклучува рекурзивни референци и не може да се кодира. Ако null , како што е
JSON_ERROR_INVALID_PROPERTY_NAME (int)
ќе биде кодиран на местото на неподдржаната вредност. json_decode() при декодирање на JSON објект во PHP објект.
JSON_ERROR_UTF16 (int)
Еден неупарен UTF-16 сурогат во уникод бегство содржан во JSON низата предадена на json_decode().
JSON_ERROR_NON_BACKED_ENUM (int)
ќе биде кодиран на местото на рекурзивната референца. json_encode() вклучува enum без поддршка што не може да се серијализира. Достапно од PHP 8.1.0.

Следниве константи може да се комбинираат за да формираат опции за json_decode().

JSON_BIGINT_AS_STRING (int)
Декодира големи цели броеви како нивна оригинална вредност на стринг.
JSON_OBJECT_AS_ARRAY (int)
Декодира JSON објекти како PHP низа. Оваа опција може да се додаде автоматски со повикување json_decode() со вториот параметар еднаков на true.

Следниве константи може да се комбинираат за да формираат опции за json_encode().

JSON_HEX_TAG (int)
Сите < и > се претвораат во \u003C и \u003E.
JSON_HEX_AMP (int)
Сите & се претвораат во \u0026.
JSON_HEX_APOS (int)
Сите ' се претвораат во \u0027.
JSON_HEX_QUOT (int)
Сите " се претвораат во \u0022.
JSON_FORCE_OBJECT (int)
Излегува објект наместо низа кога се користи не-асоцијативна низа. Особено корисно кога примачот на излезот очекува објект и низата е празна.
JSON_NUMERIC_CHECK (int)
Ги кодира нумеричките стрингови како броеви.
JSON_PRETTY_PRINT (int)
Користи празно место во вратените податоци за да ги форматира.
JSON_UNESCAPED_SLASHES (int)
Не бегај /.
JSON_UNESCAPED_UNICODE (int)
Кодирај повеќебајтни Unicode знаци буквално (стандардно е да се бега како \uXXXX).
JSON_PARTIAL_OUTPUT_ON_ERROR (int)
Замени некои вредности што не можат да се кодираат наместо да откажува.
JSON_PRESERVE_ZERO_FRACTION (int)
Осигурува дека float вредностите секогаш се кодираат како float вредност.
JSON_UNESCAPED_LINE_TERMINATORS (int)
Терминаторите на редовите се чуваат не-избегнати кога JSON_UNESCAPED_UNICODE се снабдува. Го користи истото однесување како пред PHP 7.1 без оваа константа. Достапно од PHP 7.1.0.

Следниве константи може да се комбинираат за да формираат опции за json_decode() and json_encode().

JSON_INVALID_UTF8_IGNORE (int)
се снабдува. Користи исто однесување како пред PHP 7.1 без овој констант. Достапно од PHP 7.1.0.
JSON_INVALID_UTF8_SUBSTITUTE (int)
Игнорирај невалидни UTF-8 карактери. Достапно од PHP 7.2.0.
JSON_THROW_ON_ERROR (int)
). Ако повикот не успее, ќе врати JsonException Конвертирај невалидни UTF-8 карактери во \0xfffd (Unicode карактер 'REPLACEMENT CHARACTER') Достапно од PHP 7.2.0. json_last_error() and json_last_error_msg(). JSON_PARTIAL_OUTPUT_ON_ERROR ако се случи грешка наместо поставување на глобалната состојба на грешката што се добива со JSON_THROW_ON_ERRORима предност пред

Белешки од корисници 6 белешки

. Достапно од PHP 7.3.0.
пред 9 години
To get a really clean json string use these three constants like so:

<?php
$array = ['€', 'http://example.com/some/cool/page', '337'];
$bad   = json_encode($array); 
$good  = json_encode($array,  JSON_UNESCAPED_UNICODE | JSON_UNESCAPED_SLASHES | JSON_NUMERIC_CHECK);

// $bad would be  ["\u20ac","http:\/\/example.com\/some\/cool\/page","337"]
// $good would be ["€","http://example.com/some/cool/page",337]
?>
Јизмир Рамирез
пред 11 години
If you curious of the numeric values of the constants, as of JSON 1.2.1, the constants have the following values (not that you should use the numbers directly):

JSON_HEX_TAG => 1
JSON_HEX_AMP => 2
JSON_HEX_APOS => 4
JSON_HEX_QUOT => 8
JSON_FORCE_OBJECT => 16
JSON_NUMERIC_CHECK => 32
JSON_UNESCAPED_SLASHES => 64
JSON_PRETTY_PRINT => 128
JSON_UNESCAPED_UNICODE => 256

JSON_ERROR_DEPTH => 1
JSON_ERROR_STATE_MISMATCH => 2
JSON_ERROR_CTRL_CHAR => 3

JSON_ERROR_SYNTAX => 4

JSON_ERROR_UTF8 => 5
JSON_OBJECT_AS_ARRAY => 1

JSON_BIGINT_AS_STRING => 2
nikospapoutsis
3 години пред
Be EXTREMELY cautious when using the code majid4466 at gmail dot com provided, or JSON_NUMERIC_CHECK in general.

For example, in php 7.4 and 8.1 with precision: 14 and serialize_precision: -1 we get:

<?php
$array = ['€', 55.6666666666666666, 'http://example.com/some/cool/page', '000337', '55.6666666666666666'];
echo $case1 = json_encode($array);
echo $case2 = json_encode($array,  JSON_UNESCAPED_UNICODE | JSON_UNESCAPED_SLASHES );
echo $case3 = json_encode($array,  JSON_UNESCAPED_UNICODE | JSON_UNESCAPED_SLASHES | JSON_NUMERIC_CHECK);

["\u20ac",55.666666666666664,"http:\/\/example.com\/some\/cool\/page","000337","55.6666666666666666"]
// in $case1, both euro sign and the url change but we also lost a digit in our unquoted float (due to precision)

["€",55.666666666666664,"http://example.com/some/cool/page","000337","55.6666666666666666"]
// in $case2, both euro sign and the url stay exactly the same but we still lost a digit in our unquoted float (due to precision)

["€",55.666666666666664,"http://example.com/some/cool/page",337,55.666666666666664]
// in $case3, we once again keep euro sign and the url intact but this time not only our unquoted float lost a digit
// but the same happened to our quoted float and the number/string lost its leading zeros too

Also, note that in php 5.x you will probably get some different but equally wrong results as default values may be different and some functions have changed internally as well.
majid4466 на gmail точка com
пред 1 година
Warning about JSON_NUMERIC_CHECK and scientific notation.

JSON_NUMERIC_CHECK will remove scientific notation. Thus,
json_encode(['scientificNumber' => '1e-4'], JSON_NUMERIC_CHECK);
will return {"scientificNumber":0.0001}

You have to account for this, as it may defeat the whole purpose of scientific notation.
Tr909 at com dot nospam dot bigfoot
пред 7 години
In a multi-level array, JSON_FORCE_OBJECT will encode ALL nested numeric arrays as objects. 

If your concern was ONLY the first-level array (e.g., to make it suitable as a MySQL JSON column), you could just cast your first-level array to object, e.g.:

<?php
$json = json_encode( (object) $array, JSON_PRESERVE_ZERO_FRACTION+JSON_UNESCAPED_UNICODE );
?>

Or, if you have large arrays and are concerned about the overhead of object casting, you could append a "null" value beyond the size of the array, which will force the array to become associative:

<?php
$beyond = count( $array ) + 1;
if ( !array_key_exists( $beyond, $array) )
     $array[ $beyond ] = NULL;
$json = json_encode( $array, JSON_PRESERVE_ZERO_FRACTION+JSON_UNESCAPED_UNICODE );
?>

Of course, your later code has to treat an element with a "NULL" value the same as "!isset()", if it iterates the array.
Анонимен
пред 7 години
flags JSON_NUMERIC_CHECK and JSON_PRESERVE_ZERO_FRACTION are broken in php 7+ — json_encode((float)8.8) returns "8.8000000000000007", and json_encode((float)8.8, JSON_NUMERIC_CHECK) and json_encode((float)8.8, JSON_PRESERVE_ZERO_FRACTION) return "8.8000000000000007" too.

the only way to fix this is setting "serialize_precision = -1" in php.ini
Навигација

Прелистувај сродни теми и функции.

На оваа страница

Автоматски outline од активната документација.

Насловите ќе се појават тука по вчитување.

Попрегледно читање

Примерите, changelog табелите и user notes се визуелно издвоени за да не се губат во долгата содржина.

Брз совет Користи го outline-от Скокни директно на главните секции од активната страница.
Извор Оригиналниот линк останува достапен Кога ти треба целосен upstream context, отвори го PHP.net во нов tab.