(PHP 5 >= 5.2.0, PHP 7, PECL json >= 1.2.0)
json_encode — Întoarce o reprezentare JSON pentru valoarea dată
Întoarce un șir care conține o reprezentare JSON pentru valoarea
(value
) dată.
Codificarea este afectată de valoarea parametrului options
și adițional codificarea valorilor cu virgulă flotantă depinde de valoarea
serialize_precision.
value
Valoarea (value
) care trebuie reprezentată JSON.
Poate fi de orice tip cu excepția resource.
Toate șirurile cu date trebuie să fie codificate în UTF-8.
Notă:
PHP implementează un superset al JSON, după cum este specificat în documentul original » RFC 7159.
options
O mască de biți, ce constă din
JSON_FORCE_OBJECT
,
JSON_HEX_QUOT
,
JSON_HEX_TAG
,
JSON_HEX_AMP
,
JSON_HEX_APOS
,
JSON_INVALID_UTF8_IGNORE
,
JSON_INVALID_UTF8_SUBSTITUTE
,
JSON_NUMERIC_CHECK
,
JSON_PARTIAL_OUTPUT_ON_ERROR
,
JSON_PRESERVE_ZERO_FRACTION
,
JSON_PRETTY_PRINT
,
JSON_UNESCAPED_LINE_TERMINATORS
,
JSON_UNESCAPED_SLASHES
,
JSON_UNESCAPED_UNICODE
,
JSON_THROW_ON_ERROR
.
Comportamentul acestor constante este descris în pagina
Constante JSON.
depth
Stabilește adâncimea maximă. Trebuie să fie mai mare decât zero.
Întoarce un string reprezentat JSON în caz de succes, sau false
în cazul eșecului.
Versiune | Descriere |
---|---|
7.3.0 |
A fost adăugată constanta JSON_THROW_ON_ERROR
pentru parametrul options .
|
7.2.0 |
Au fost adăugate constantele JSON_INVALID_UTF8_IGNORE și
JSON_INVALID_UTF8_SUBSTITUTE pentru parametrul
options .
|
7.1.0 |
A fost adăugată constanta JSON_UNESCAPED_LINE_TERMINATORS
pentru parametrul options .
|
7.1.0 | serialize_precision este utilizat în loc de precision la codificarea valorilor de tip "double". |
Example #1 Un exemplu json_encode()
<?php
$arr = array('a' => 1, 'b' => 2, 'c' => 3, 'd' => 4, 'e' => 5);
echo json_encode($arr);
?>
Exemplul de mai sus va afișa:
{"a":1,"b":2,"c":3,"d":4,"e":5}
Example #2 Un exemplu json_encode() ce demonstrează utilizarea opțiunilor
<?php
$a = array('<foo>',"'bar'",'"baz"','&blong&', "\xc3\xa9");
echo "Normal: ", json_encode($a), "\n";
echo "Tags: ", json_encode($a, JSON_HEX_TAG), "\n";
echo "Apos: ", json_encode($a, JSON_HEX_APOS), "\n";
echo "Quot: ", json_encode($a, JSON_HEX_QUOT), "\n";
echo "Amp: ", json_encode($a, JSON_HEX_AMP), "\n";
echo "Unicode: ", json_encode($a, JSON_UNESCAPED_UNICODE), "\n";
echo "All: ", json_encode($a, JSON_HEX_TAG | JSON_HEX_APOS | JSON_HEX_QUOT | JSON_HEX_AMP | JSON_UNESCAPED_UNICODE), "\n\n";
$b = array();
echo "Empty array output as array: ", json_encode($b), "\n";
echo "Empty array output as object: ", json_encode($b, JSON_FORCE_OBJECT), "\n\n";
$c = array(array(1,2,3));
echo "Non-associative array output as array: ", json_encode($c), "\n";
echo "Non-associative array output as object: ", json_encode($c, JSON_FORCE_OBJECT), "\n\n";
$d = array('foo' => 'bar', 'baz' => 'long');
echo "Associative array always output as object: ", json_encode($d), "\n";
echo "Associative array always output as object: ", json_encode($d, JSON_FORCE_OBJECT), "\n\n";
?>
Exemplul de mai sus va afișa:
Normal: ["<foo>","'bar'","\"baz\"","&blong&","\u00e9"] Tags: ["\u003Cfoo\u003E","'bar'","\"baz\"","&blong&","\u00e9"] Apos: ["<foo>","\u0027bar\u0027","\"baz\"","&blong&","\u00e9"] Quot: ["<foo>","'bar'","\u0022baz\u0022","&blong&","\u00e9"] Amp: ["<foo>","'bar'","\"baz\"","\u0026blong\u0026","\u00e9"] Unicode: ["<foo>","'bar'","\"baz\"","&blong&","é"] All: ["\u003Cfoo\u003E","\u0027bar\u0027","\u0022baz\u0022","\u0026blong\u0026","é"] Empty array output as array: [] Empty array output as object: {} Non-associative array output as array: [[1,2,3]] Non-associative array output as object: {"0":{"0":1,"1":2,"2":3}} Associative array always output as object: {"foo":"bar","baz":"long"} Associative array always output as object: {"foo":"bar","baz":"long"}
Example #3 Exemplu a opțiunii JSON_NUMERIC_CHECK
<?php
echo "Strings representing numbers automatically turned into numbers".PHP_EOL;
$numbers = array('+123123', '-123123', '1.2e3', '0.00001');
var_dump(
$numbers,
json_encode($numbers, JSON_NUMERIC_CHECK)
);
echo "Strings containing improperly formatted numbers".PHP_EOL;
$strings = array('+a33123456789', 'a123');
var_dump(
$strings,
json_encode($strings, JSON_NUMERIC_CHECK)
);
?>
Exemplul de mai sus va afișa ceva similar cu:
Strings representing numbers automatically turned into numbers array(4) { [0]=> string(7) "+123123" [1]=> string(7) "-123123" [2]=> string(5) "1.2e3" [3]=> string(7) "0.00001" } string(28) "[123123,-123123,1200,1.0e-5]" Strings containing improperly formatted numbers array(2) { [0]=> string(13) "+a33123456789" [1]=> string(4) "a123" } string(24) "["+a33123456789","a123"]"
Example #4 Un exemplu cu tablou secvențial versus un tablou non-secvențial
<?php
echo "Sequential array".PHP_EOL;
$sequential = array("foo", "bar", "baz", "blong");
var_dump(
$sequential,
json_encode($sequential)
);
echo PHP_EOL."Non-sequential array".PHP_EOL;
$nonsequential = array(1=>"foo", 2=>"bar", 3=>"baz", 4=>"blong");
var_dump(
$nonsequential,
json_encode($nonsequential)
);
echo PHP_EOL."Sequential array with one key unset".PHP_EOL;
unset($sequential[1]);
var_dump(
$sequential,
json_encode($sequential)
);
?>
Exemplul de mai sus va afișa:
Sequential array array(4) { [0]=> string(3) "foo" [1]=> string(3) "bar" [2]=> string(3) "baz" [3]=> string(5) "blong" } string(27) "["foo","bar","baz","blong"]" Non-sequential array array(4) { [1]=> string(3) "foo" [2]=> string(3) "bar" [3]=> string(3) "baz" [4]=> string(5) "blong" } string(43) "{"1":"foo","2":"bar","3":"baz","4":"blong"}" Sequential array with one key unset array(3) { [0]=> string(3) "foo" [2]=> string(3) "baz" [3]=> string(5) "blong" } string(33) "{"0":"foo","2":"baz","3":"blong"}"
Example #5 Exemplu cu opțiunea JSON_PRESERVE_ZERO_FRACTION
<?php
var_dump(json_encode(12.0, JSON_PRESERVE_ZERO_FRACTION));
var_dump(json_encode(12.0));
?>
Exemplul de mai sus va afișa:
string(4) "12.0" string(2) "12"
Notă:
În caz dacă eșuează codificarea, json_last_error() poate fi utilizat pentru a determina natura exactă a erorii.
Notă:
La codificarea tablourilor, dacă cheile nu sunt consecutivități numerice începând cu 0, atunci toate cheile vor fi codificate ca șiruri de caractere, și vor fi specificate explicit pentru fiecare pereche cheie-valoare.
Notă:
Ca și codificatorul JSON de referință, json_encode() va genera JSON care este o valoare simplă (adică nu este obiect sau tablou) dacă îi este furnizată o valoare de tip string, int, float sau bool pentru parametrul
value
. În timp ce majoritatea decodificatorilor JSON vor accepta aceste valori ca fiind JSON valid, altele pot să nu-l accepte, deoarece specificația este ambiguă în această privință.În concluzie, întotdeauna verificați ca decodificatorul JSON să poată prelucra ceea ce se obține cu json_encode().