(PHP 5 >= 5.2.0, PECL json >= 1.2.0, PHP 7)
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ă un superset al JSON, după cum este specificat în documentul » RFC 4627 original; de asemenea el va codifica și va decodifica tipuri scalare și
NULL
. RFC 4627 susține aceste valori doar atunci când ele sunt încorporate într-un tablou sau obiect.Cu toate că acest superset este consecvent cu definiția extinsă de "text JSON" din noul » RFC 7159 (care are ca scop să înlocuiască RFC 4627) și ECMA-404, aceasta poate cauza probleme de interoperabilitate cu interpretorii JSON mai vechi care aderă strict la RFC 4627 la codificarea unei singure valori scalare.
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_PRESERVE_ZERO_FRACTION
,
JSON_UNESCAPED_UNICODE
,
JSON_PARTIAL_OUTPUT_ON_ERROR
. 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.
Versiune | Descriere |
---|---|
5.6.6 |
option JSON_PRESERVE_ZERO_FRACTION a fost adăugată.
|
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 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:
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, 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().