Funcții JSON
PHP Manual

json_encode

(PHP 5 >= 5.2.0, PECL json >= 1.2.0)

json_encodeÎntoarce o reprezentare JSON pentru valoarea dată

Descrierea

string json_encode ( mixed $value [, int $options = 0 [, int $depth = 512 ]] )

Întoarce un șir care conține o reprezentare JSON pentru valoarea (value) dată.

Parametri

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.

Valorile întoarse

Întoarce un șir (string) reprezentat JSON în caz de succes, sau FALSE în cazul eșecului.

Istoria schimbărilor

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.

Exemple

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($aJSON_HEX_TAG), "\n";
echo 
"Apos: ",    json_encode($aJSON_HEX_APOS), "\n";
echo 
"Quot: ",    json_encode($aJSON_HEX_QUOT), "\n";
echo 
"Amp: ",     json_encode($aJSON_HEX_AMP), "\n";
echo 
"Unicode: "json_encode($aJSON_UNESCAPED_UNICODE), "\n";
echo 
"All: ",     json_encode($aJSON_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($bJSON_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($cJSON_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($dJSON_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"}"

Note

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().

Vedeți de asemenea


Funcții JSON
PHP Manual