json_encodeDeğerin JSON karşılığını verir.
&reftitle.description;
stringfalsejson_encodemixeddeğerintseçenekler0intderinlik512
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.
&reftitle.parameters;
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çeneklerJSON_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.
&reftitle.returnvalues;
Başarı durumunda JSON kodlu bir dizge,&return.falseforfailure;.
&reftitle.changelog;
&Version;&Description;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
precision &php.ini; seçeneği yerine
serialize_precision
kullanılır.
&reftitle.examples;
- json_encode örneği
1, 'b' => 2, 'c' => 3, 'd' => 4, 'e' => 5);
echo json_encode($arr);
?>
]]>
&example.outputs;
- Bazı seçeneklerin kullanımını gösteren
json_encode örneği
',"'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";
?>
]]>
&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","é"]
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"}
]]>
- JSON_NUMERIC_CHECK seçeneği örneği
]]>
&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]"
Yanlış biçimlendirilmiş sayılar içeren dizgeler
array(2) {
[0]=>
string(13) "+a33123456789"
[1]=>
string(4) "a123"
}
string(24) "["+a33123456789","a123"]"
]]>
- Sıralı ve sırasız dizi örneği
"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)
);
?>
]]>
&example.outputs;
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"}"
]]>
- JSON_PRESERVE_ZERO_FRACTION seçeneği
]]>
&example.outputs;
&reftitle.notes;
Kodlamada bir başarısızlık durumunda, hatanın tam niteliğini belirlemek için
json_last_error kullanılabilir.
Bir diziyi kodlarken, anahtarlar 0'dan başlayan sürekli bir sayısal dizi
değilse, tüm anahtarlar dizge olarak kodlanır ve her anahtar-değer çifti
için bu açıkça belirtilir.
İlgili JSON kodlayıcısı gibi, json_encode, girdi
değeri olarak &string;, &integer;, &float; veya
&boolean; verildiğinde basit bir değer olan (yani bir nesne veya bir dizi
olmayan) JSON üretecektir. Çoğu kod çözücü bu değerleri geçerli JSON olarak
kabul ederken, bazıları kabul etmeyebilir çünkü belirtim bu noktada
belirsizdir.
Özetlemek gerekirse, JSON kod çözücünün
json_encode'dan üretilen çıktıyı işleyebildiği her
zaman sınanmalıdır.
&reftitle.seealso;
JsonSerializablejson_decodejson_last_errorjson_last_error_msgserialize