(PHP 5 >= 5.2.0, PHP 7, PHP 8, PECL json >= 1.2.0)
json_encode — Değerin JSON karşılığını verir.
Belirtilen değer
'in JSON gösterimini içeren bir dizge döndürür. Bağımsız değişken bir dizi veya nesne ise önce ardışık olarak dizgeleştirilir.
Dizgeleştirilen değer bir nesne ise öntanımlı olarak yalnızca genelde görünür (public) özellikler içerebilir. Ancak, JSON'a dizgeleştirmeyi denetim altıda tutmak için JsonSerializable arayüzünü gerçeklemek yoluna da gidilebilir.
Kodlama, sağlanan seçenekler
den etkilenir ve ek olarak kayan noktalı değerlerin kodlanması serialize_precision değerine bağlıdır.
değer
Kodlanacak değer. resource türü dışında herhangi bir türde olabilir.
Tüm dizgeler UTF-8 kodlu olmalıdır.
seçenekler
JSON_FORCE_OBJECT
, JSON_HEX_QUOT
, JSON_HEX_TAG
, JSON_HEX_AMP
, JSON_HEX_APOS
, JSON_FORCE_OBJECT
. 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
sabitlerinin bit maskesi. Bu sabitlerin davranışı JSON sabitleri sayfasında açıklanmıştır.
Başarı durumunda JSON kodlu bir dizge, başarısızlık durumunda false
döner.
Sürüm: | Açıklama |
---|---|
7.3.0 | JSON_THROW_ON_ERROR seçeneği eklendi. |
7.2.0 | JSON_INVALID_UTF8_IGNORE ve JSON_INVALID_UTF8_SUBSTITUTE seçeneği eklendi. |
7.1.0 | JSON_UNESCAPED_LINE_TERMINATORS seçeneği eklendi. |
7.1.0 | float değerler deşifre edilirken precisionphp.ini seçeneği yerine serialize_precision kullanılır. |
Örnek 1 - json_encode() örneği
<?php
$arr = array('a' => 1, 'b' => 2, 'c' => 3, 'd' => 4, 'e' => 5);
echo json_encode($arr);
?>
Yukarıdaki örneğin çıktısı:
{"a":1,"b":2,"c":3,"d":4,"e":5}
Örnek 2 - Bazı seçeneklerin kullanımını gösteren json_encode() örneği
<?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 "Boş dizi, dizi olarak çıktılanır: ", json_encode($b), "\n";
echo "Boş dizi, nesne olarak çıktılanır: ", json_encode($b, JSON_FORCE_OBJECT), "\n\n";
$c = array(array(1,2,3));
echo "İlişkisel olmayan dizi, dizi olarak çıktılanır: ", json_encode($c), "\n";
echo "İlişkisel olmayan dizi, nesne olarak çıktılanır: ", json_encode($c, JSON_FORCE_OBJECT), "\n\n";
$d = array('foo' => 'bar', 'baz' => 'long');
echo "İlişkisel dizi daima nesne olarak çıktılanır: ", json_encode($d), "\n";
echo "İlişkisel dizi daima nesne olarak çıktılanır: ", json_encode($d, JSON_FORCE_OBJECT), "\n\n";
?>
Yukarıdaki örneğin çıktısı:
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","é"] Boş dizi, dizi olarak çıktılanır: [] Boş dizi, nesne olarak çıktılanır: {} İlişkisel olmayan dizi, dizi olarak çıktılanır: [[1,2,3]] İlişkisel olmayan dizi, nesne olarak çıktılanır: {"0":{"0":1,"1":2,"2":3}} İlişkisel dizi daima nesne olarak çıktılanır: {"foo":"bar","baz":"long"} İlişkisel dizi daima nesne olarak çıktılanır: {"foo":"bar","baz":"long"}
Örnek 3 - JSON_NUMERIC_CHECK seçeneği örneği
<?php
echo "Sayıları gösteren dizgeler otomatik olarak sayılara dönüştürülür".PHP_EOL;
$numbers = array('+123123', '-123123', '1.2e3', '0.00001');
var_dump(
$numbers,
json_encode($numbers, JSON_NUMERIC_CHECK)
);
echo "Yanlış biçimlendirilmiş sayılar içeren dizgeler".PHP_EOL;
$strings = array('+a33123456789', 'a123');
var_dump(
$strings,
json_encode($strings, JSON_NUMERIC_CHECK)
);
?>
Yukarıdaki örnek şuna benzer bir çıktı üretir:
Sayıları gösteren dizgeler otomatik olarak sayılara dönüştürülür 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]" Yanlış biçimlendirilmiş sayılar içeren dizgeler array(2) { [0]=> string(13) "+a33123456789" [1]=> string(4) "a123" } string(24) "["+a33123456789","a123"]"
Örnek 4 - Sıralı ve sırasız dizi örneği
<?php
echo "Sıralı dizi".PHP_EOL;
$sequential = array("foo", "bar", "baz", "blong");
var_dump(
$sequential,
json_encode($sequential)
);
echo PHP_EOL."Sırasız dizi".PHP_EOL;
$nonsequential = array(1=>"foo", 2=>"bar", 3=>"baz", 4=>"blong");
var_dump(
$nonsequential,
json_encode($nonsequential)
);
echo PHP_EOL."1 indisi silinmiş sıralı dizi".PHP_EOL;
unset($sequential[1]);
var_dump(
$sequential,
json_encode($sequential)
);
?>
Yukarıdaki örneğin çıktısı:
Sıralı dizi array(4) { [0]=> string(3) "foo" [1]=> string(3) "bar" [2]=> string(3) "baz" [3]=> string(5) "blong" } string(27) "["foo","bar","baz","blong"]" Sırasız dizi 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"}" 1 indisi silinmiş sıralı dizi array(3) { [0]=> string(3) "foo" [2]=> string(3) "baz" [3]=> string(5) "blong" } string(33) "{"0":"foo","2":"baz","3":"blong"}"
Örnek 5 - JSON_PRESERVE_ZERO_FRACTION
seçeneği örneği
<?php
var_dump(json_encode(12.0, JSON_PRESERVE_ZERO_FRACTION));
var_dump(json_encode(12.0));
?>
Yukarıdaki örneğin çıktısı:
string(4) "12.0" string(2) "12"