(PHP 5 >= 5.2.0, 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ă.
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ă in superset al JSON - el de asemenea va codifica și va decodifica tipuri scalare și
NULL
. Standardul JSON susține astfel de valori doar când ele sunt încorporate într-un tablou sau obiect.
options
O mască de biți, ce constă din JSON_HEX_QUOT
,
JSON_HEX_TAG
,
JSON_HEX_AMP
,
JSON_HEX_APOS
,
JSON_NUMERIC_CHECK
,
JSON_PRETTY_PRINT
,
JSON_UNESCAPED_SLASHES
,
JSON_FORCE_OBJECT
,
JSON_UNESCAPED_UNICODE
. Comportamentul acestor
constante este descris în
pagina cu constante JSON.
depth
Stabilește adâncimea maximă. Trebuie să fie mai mare decât zero.
Întoarce un șir (string) reprezentat JSON în caz de succes,
sau FALSE
în cazul eșecului.
Versiunea | Descriere |
---|---|
5.5.0 |
A fost adăugat parametrul depth .
|
5.4.0 |
Au fost adăugate constantele
JSON_PRETTY_PRINT ,
JSON_UNESCAPED_SLASHES ,
JSON_UNESCAPED_UNICODE
pentru parametrul options .
|
5.3.3 |
A fost adăugată constanta JSON_NUMERIC_CHECK pentru parametrul option .
|
5.3.0 |
A fost adăugat parametrul options .
|
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 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"}"
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, integer, float sau boolean 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().