json_encode

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

json_encodeDeğerin JSON karşılığını verir.

Açıklama

json_encode(mixed$değer, int$seçenekler = 0, int$derinlik = 512): string|false

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çeneklerden etkilenir ve ek olarak kayan noktalı değerlerin kodlanması serialize_precision değerine bağlıdır.

Bağımsız Değişkenler

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.

Dönen Değerler

Başarı durumunda JSON kodlu bir dizge, başarısızlık durumunda false döner.

Sürüm Bilgisi

Sürüm: Açıklama
7.3.0JSON_THROW_ON_ERROR seçeneği eklendi.
7.2.0JSON_INVALID_UTF8_IGNORE ve JSON_INVALID_UTF8_SUBSTITUTE seçeneği eklendi.
7.1.0JSON_UNESCAPED_LINE_TERMINATORS seçeneği eklendi.
7.1.0float değerler deşifre edilirken precisionphp.ini seçeneği yerine serialize_precision kullanılır.

Örnekler

Ö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"

Ayrıca Bakınız

To Top