Ama daha önce web servislerinin nasıl tüketileceğinden (ister REST ister SOAP olsun) bahsettiğim için dikkatimi çeken kısma odaklanacağım: JSON’dan CSV’ye nasıl geçilir.
Ayrıntılara geçmeden önce birçoğunu açıklığa kavuşturalım:
JSON nedir
JSON, JavaScript Nesne Gösterimi anlamına gelir, yani: JavaScript nesne gösterimi. JavaScript’in yararları (veya eksikliği) hakkında konuşmak bu makalenin (ve genel olarak bu blogun) kapsamını aşıyor… orada bir sürü harika şey var.
Buradaki nokta, neyi sevip neyi sevmediğinize bakılmaksızın JavaScript’in nesneleri tanımlamak için çok kullanışlı bir sözdizimine sahip olmasıdır: {} içine alınmış her şey bir nesnedir (işlev gövdelerinin olası istisnası ile). …).
Bu, onu karmaşık yapılar hakkında bilgi alışverişi için son derece uygun bir format haline getirir, çünkü bellekteki bir nesneden metinsel bir temsile geçmenin çok basit bir yoludur (bir metin değişim protokolü aracılığıyla gönderilebilir… HTTP örneği ile 🙂 ).
Kısacası, şöyle görünen bir metin:
1 2 3 4 5 6 7 8 9 10 11 12 13 | { "isim": "Hayri", "dostlar": [ { "isim": "Ahmet" }, { "isim": "Huseyin" } ] } |
İki özelliği olan bir nesneyi temsil ediyor olurdu: isim ve dostalar. Birincisi bir dize, ikincisi ise diğer nesnelerin bir dizisidir.
Çok basit görünüyor (ve öyle!) Ama küçük bir dezavantajı var: sözdizimi çok serbest değil (Birini bırakın, bırakın ve tutun :p), bu nedenle, onu işlemek için PHP’nin kendi işlevlerini kullanmak çok uygundur. ( json_encode ve json_decode).
CSV nedir
CSV, Virgülle Ayrılmış Değerler anlamına gelir. Sistemler arasında bilgi alışverişi için de kullanılan bir metin formatıdır.
Genellikle bu tür bir dosyanın içeriği, alanların sayısı birinden diğerine değişebilen ve her alanın uzunluğu da değişebilen kayıtlara karşılık gelen bir dizi satırdır.
Örnek:
1 2 3 4 5 6 | isim, soyisim, email, Hayri,KOCMARLAR,hayri@asmail.com, Ahmet,CANSEVER,ahmet@asmail.com, Taylan,ÇELİK,celik.taylan@mailmail.com", |
JSON’dan CSV’ye
Yapılması gereken ilk uyarı, JSON’un karmaşık yapılara (örneğin çok düzeyli) izin veren bir format olduğu, CSV’nin ise çok daha basit bir format olduğu (“düz” yapılara dayalı olduğu) ve bununla birlikte bir şeylerin kaybedeceğidir. (ya da bilgilerin bazı varsayımları veya dönüşümlerinin yapılması gerekecektir).
Pratik amaçlar için, başlangıç JSON’unun aşağıdaki gibi tek seviyeli olduğunu varsayalım:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 | [ { "isim": "Hayri", "soyisim": "KOCMARLAR", "email": "hayri@asmail.com", "": "" }, { "isim": "Ahmet", "soyisim": "CANSEVER", "email": "ahmet@asmail.com", "": "" }, { "isim": "Taylan", "soyisim": "ÇELİK", "email": "celik.taylan@mailmail.com", "": "" } ] |
Karşılık gelen CSV şöyle olacaktır:
1 2 3 4 5 6 | isim, soyisim, email, Hayri,KOCMARLAR,hayri@asmail.com, Ahmet,CANSEVER,ahmet@asmail.com, Taylan,ÇELİK,celik.taylan@mailmail.com", |
Bunu başaran bir PHP kodu:
1 2 3 4 5 6 7 8 9 10 11 12 13 | <?php $f = fopen( 'output.csv', 'w+' ); $array = json_decode( file_get_contents( 'entry.json' ), true ); array_unshift( $array, [ 'isim', 'soyisim', 'email' ] ); foreach ( $array as $object ) { fputcsv( $f, $object ); } fclose( $f ); |
Şimdi, ihtiyaç daha karmaşıksa… biraz araştırmaktan daha iyi bir şey yok :).











Yorum Yap