json_encodeÎntoarce o reprezentare JSON pentru valoarea dată
&reftitle.description;
stringjson_encodemixedvalueintoptions0intdepth512
Î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.
&reftitle.parameters;
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.
&json.implementation.superset;
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.
&reftitle.returnvalues;
Întoarce un &string; reprezentat JSON în caz de succes, &return.falseforfailure;.
&reftitle.changelog;
&Version;&Description;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".
&reftitle.examples;
Un exemplu json_encode
1, 'b' => 2, 'c' => 3, 'd' => 4, 'e' => 5);
echo json_encode($arr);
?>
]]>
&example.outputs;
Un exemplu json_encode ce demonstrează utilizarea opțiunilor
',"'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";
?>
]]>
&example.outputs;
","'bar'","\"baz\"","&blong&","\u00e9"]
Tags: ["\u003Cfoo\u003E","'bar'","\"baz\"","&blong&","\u00e9"]
Apos: ["","\u0027bar\u0027","\"baz\"","&blong&","\u00e9"]
Quot: ["","'bar'","\u0022baz\u0022","&blong&","\u00e9"]
Amp: ["","'bar'","\"baz\"","\u0026blong\u0026","\u00e9"]
Unicode: ["","'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"}
]]>
Exemplu a opțiunii JSON_NUMERIC_CHECK
]]>
&example.outputs.similar;
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"]"
]]>
Un exemplu cu tablou secvențial versus un tablou non-secvențial
"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)
);
?>
]]>
&example.outputs;
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"}"
]]>
Exemplu cu opțiunea JSON_PRESERVE_ZERO_FRACTION
]]>
&example.outputs;
&reftitle.notes;
În caz dacă eșuează codificarea, json_last_error poate
fi utilizat pentru a determina natura exactă a erorii.
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.
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.
&reftitle.seealso;
JsonSerializablejson_decodejson_last_errorserialize