PHP 8'de json_encode()
fonksiyonu, bir PHP değişkenini (dizi, nesne vb.) JSON formatına dönüştürmek için kullanılır. Bu işlem, verileri genellikle bir API ile paylaşmak, dosyalarda saklamak veya başka sistemlerle veri alışverişi yapmak için gereklidir. json_encode()
fonksiyonu, dizileri, nesneleri ve diğer veritiplerini JSON uyumlu bir yapıya dönüştürür.
json_encode()
Fonksiyonunun Kullanımı
json_encode()
fonksiyonu, verilen PHP verisini JSON formatına dönüştürür. Temel sözdizimi şu şekildedir:
string json_encode ( mixed $value [, int $flags = 0 [, int $depth = 512 ]] )
-
value
: JSON formatına dönüştürülecek PHP değişkeni. Bu, bir dizi, nesne, string, sayı vb. olabilir. -
flags
(isteğe bağlı): Çeşitli seçenekleri belirlemek için kullanılan bayraklar. -
depth
(isteğe bağlı): JSON dönüşümünde izin verilen maksimum derinlik. Varsayılan olarak512
'dir.
Basit Kullanım
PHP dizilerini veya nesnelerini JSON formatına dönüştürmek için json_encode()
kullanılabilir.
Örnek 1: Diziyi JSON Formatına Dönüştürmek
<?php
$veri = [
"isim" => "Ahmet",
"yas" => 25,
"meslek" => "Yazılımcı"
];
// Diziyi JSON formatına dönüştür
$json = json_encode($veri);
echo $json;
?>
Bu örnekte, $veri
dizisi JSON stringine dönüştürülür. Çıktı şu şekilde olur:
{
"isim"
:
"Ahmet"
,
"yas"
:
25
,
"meslek"
:
"Yazılımcı"
}
Örnek 2: Nesneyi JSON Formatına Dönüştürmek
PHP nesneleri de json_encode()
ile JSON formatına dönüştürülebilir.
<?php
class Kisi {
public $isim;
public $yas;
public $meslek;
public
function __construct(
$isim, $yas, $meslek
) {
$this->isim = $isim;
$this->yas = $yas;
$this->meslek = $meslek;
}
}
$kisi = new Kisi("Ahmet", 25, "Yazılımcı");
// Nesneyi JSON formatına dönüştür
$json = json_encode($kisi);
echo $json;
?>
Çıktı şu şekilde olur:
{
"isim"
:
"Ahmet"
,
"yas"
:
25
,
"meslek"
:
"Yazılımcı"
}
JSON Encode Seçenekleri (Flags
)
json_encode()
fonksiyonu ile çeşitli bayraklar (flags) kullanarak çıktıyı değiştirebilirsiniz.
Yaygın Kullanılan json_encode
Bayrakları
-
JSON_PRETTY_PRINT
: JSON çıktısını insan okunabilir bir formatta döndürür (düzgün biçimlendirilmiş). -
JSON_UNESCAPED_SLASHES
: JSON'daki eğik çizgilerin (/
) kaçmasını engeller. -
JSON_UNESCAPED_UNICODE
: Unicode karakterlerinin kaçmasını engeller (Türkçe karakterler gibi). -
JSON_NUMERIC_CHECK
: Sayısal stringlerin sayıya dönüştürülmesini sağlar.
Örnek: JSON_PRETTY_PRINT
Kullanımı
<?php
$veri = [
"isim" => "Ahmet",
"yas" => 25,
"meslek" => "Yazılımcı"
];
// JSON'u düzgün biçimlendirilmiş halde dönüştür
$json = json_encode($veri, JSON_PRETTY_PRINT);
echo $json;
?>
Bu örnekte, JSON çıktısı okunabilir bir formatta üretilir:
{
"isim"
: "Ahmet"
,
"yas"
: 25
,
"meslek"
: "Yazılımcı"
}
Örnek: JSON_UNESCAPED_UNICODE
ve JSON_UNESCAPED_SLASHES
Kullanımı
<?php
$veri = [
"site" => "https://ornek.com/ana/sayfa",
"karakter" => "Ç",
];
// Eğik çizgileri ve Unicode karakterlerini kaçmadan göster
$json = json_encode($veri, JSON_UNESCAPED_UNICODE | JSON_UNESCAPED_SLASHES);
echo $json;
?>
Bu bayraklar sayesinde çıktıda kaçma karakterleri kullanılmaz:
{
"site"
:
"https://ornek.com/ana/sayfa"
,
"karakter"
:
"Ç"
}
Çok Boyutlu Dizilerin JSON Formatına Dönüştürülmesi
Eğer bir dizi çok boyutluysa (iç içe diziler barındırıyorsa), json_encode()
bu dizileri de doğru şekilde JSON formatına dönüştürür.
<?php
$veri = [
"isim" => "Ahmet",
"yas" => 25,
"beceriler" => [
"diller" => ["PHP", "JavaScript", "Python"],
"veritabanı" => "MySQL"
]
];
// Diziyi JSON formatına dönüştür
$json = json_encode($veri, JSON_PRETTY_PRINT);
echo $json;
?>
Çıktı şu şekilde olacaktır:
{
"isim"
: "Ahmet"
,
"yas"
: 25
,
"beceriler"
: {
"diller"
: [
"PHP"
,
"JavaScript"
,
"Python"
]
,
"veritabanı"
: "MySQL"
}
}
JSON Encode Kullanımında Hatalar ve Kontroller
Eğer json_encode()
sırasında bir hata oluşursa, fonksiyon false
döner. JSON kodlaması sırasında oluşan hataları kontrol etmek için json_last_error()
ve json_last_error_msg()
fonksiyonlarını kullanabilirsiniz.
Örnek: JSON Encode Hatalarını Kontrol Etmek
<?php
$veri = "xB1x31"; // Geçersiz bir string
$json = json_encode($veri);
if ($json === false) {
// JSON hatasını al
echo "JSON kodlama hatası: " . json_last_error_msg();
} else {
echo $json;
}
?>
Bu kod çalıştığında, json_last_error_msg()
ile hata mesajı görüntülenir:
JSON kodlama hatası: Malformed UTF-8 characters, possibly incorrectly encoded
JSON Encode Fonksiyonu ile Sayısal Stringlerin Kontrolü
Eğer sayısal stringleri JSON çıktısında sayısal veri olarak görmek istiyorsanız, JSON_NUMERIC_CHECK
bayrağını kullanabilirsiniz.
Örnek: JSON_NUMERIC_CHECK
Kullanımı
<?php
$veri = [
"isim" => "Ahmet",
"telefon" => "1234567890", // Sayısal string
];
// JSON_NUMERIC_CHECK kullanılarak sayısal stringlerin sayıya dönüştürülmesi
$json = json_encode($veri, JSON_NUMERIC_CHECK);
echo $json;
?>
Çıktıda telefon
verisi bir sayı olarak gösterilir:
{
"isim"
:
"Ahmet"
,
"telefon"
:
1234567890
}
Sonuç
-
json_encode()
, PHP verilerini JSON formatına dönüştürmek için kullanılan bir fonksiyondur. - Basit diziler, çok boyutlu diziler ve nesneler JSON formatına dönüştürülebilir.
-
JSON_PRETTY_PRINT
,JSON_UNESCAPED_UNICODE
,JSON_NUMERIC_CHECK
gibi bayraklarla JSON çıktısı özelleştirilebilir. - Hataları kontrol etmek için
json_last_error()
vejson_last_error_msg()
fonksiyonları kullanılabilir.
PHP 8 ile JSON işlemleri, veri paylaşımı ve API entegrasyonları gibi birçok uygulamada yaygın olarak kullanılmaktadır.