JSON to csv programını yazmak mümkün mü?

qualfy

Hectopat
Katılım
3 Aralık 2020
Mesajlar
525
Çözümler
1
Daha fazla  
Cinsiyet
Erkek
Merhaba, bir proje ödevi aldım ve ödevde JSON dosyasını csv dosyasına çevirmemiz isteniyor. Ödevde sadece C dili kullanılacak olup herhangi bir dış kütüphane kullanmak yasak. Bu kod için bilgi aradığımda ne internette ne GitHub'da bilginin kırıntısına rastlamadım. ChatGPT zaten bu kadar karmaşık bir görevi anlamıyor bile. Kodlama tecrübesi olan insanlara soruyorum, benim bu işi yapma imkanım var mıdır? Ne yapan gördüm, ne bir bilgi gördüm. Kendim bir algoritma yazdım fakat hem çok karmaşık hem de açıkları bulunuyor, karmaşık bir çıktı alıyorum. Tecrübeli arkadaşlar, önerileriniz nelerdir? Şimdiden teşekkürler.
 
Belirli veri setleri için ise veri setini paylaşırsan ona göre öneride bulunabiliriz aksi genel bir çevirici yazmak istiyorsan teorik olarak mümkün ancak pek mantıklı değil.
 
CSV ayni sablondaki datalar icin kullanilir.
Free form bir JSON datasini CSV olarak reprezente etmek hic pratik degil cunku ayni variable tipi degiskenlik gosterebilir.
Kod:
{
    "data":
    [
        {
            "x": 3
        },
        {
            "x": "121"
        },
        {
            "x": true
        },
        {
            "x": "2012-07-14T01:00:00+01:00"
        },
        {
            "x": 1541252151.1290001
        },
        {
            "x":
            {
                "p": 3,
                "y": true,
                "q":
                {}
            }
        }
    ]
}
 
Anladığım kadarıyla ödevin amacı JSON ve CSVnin verileri nasıl tuttuğunu inceleyip en basit şekilde dönüşüm yapacak algoritmayı yazmanız.

CSV, "Comma Separated Values" yani virgülle ayrılmış verilerdir. Datayı virgüller ile ayırır. Ödeviniz de büyük ihtimal JSON dosyasındaki verileri satır satır okuyup, doğru zamanda doğru virgülleri koyacak algoritma ile CSV ye dönüştürmekten ibaret.
 
Bunun ödev olduğunu düşünürsek zaten extreme bir format gelmeyecektir diye kabul edebiliriz. Kaldı ki geldiğini bile düşünsek bu programı kullanacak kişilerin json dosyasının csv formata dönüşebileceğini akıl edebilmeliler.

Ödevi vereni çok takdir ettim. Gerçekten işe yarar bir proje.
Github da json to csv olarak arattığımda C/C++ dilleri çıkmadı. Buda demektir ki aslında güzel bir open source projelik bir ödev. Güzel bir Readme ile başka insanlarında problemlerine çözüm olmuş olabilirsin. Ayrıca güzel bir portfolio projesi.

Neyse konudan biraz sapmış olabilirim. Asıl soruya gelirsek;
Json parse edebiliyor olman lazım. Json parse eden birçok proje bulabilirsin.
Örnek olması için C++ ile yazılmış, benimde sıklıkla kullandığım bir proje bırakayım.

Json dan okuduğun tüm verileri anlaman ve bunu csv formata dökebilmen lazım. Csv formata dökebilmek için önce bir array ve içerisinde aynı tip obje bekliyor olman lazım ki csv de her bir satıra bu objeleri yazabilesin.

Şimdilik alttaki gibi statik bir obje için yapmanı öneririm. Mesela
[{x:1, y:3},{x:2,y:2}]
bu json datayı düşün. Bunun csv formatı x ve y sütunlarından ve 2 satırlık basit bir csv oluşmuş olacak.
Yapacağın projede ufak ufak adım atabilmen lazım. Bunun içinde küçük iş parçalarına bölmekte fayda var.
-gelen json datayı belli bir obje formatına dönüştür. Bunu da linkedlist gibi bir veri yapısında tut.
- obje keylerini csv header sütunlarına yaz.
- listeyi tek tek gez ve datayı csv dosyasına satır olarak yaz.

Bu adımlar araştırarak yapılabilir. Yani sorduğun bir soruya cevap olarak; evet yapabilirsin.

Bu projenin en kritik can alıcı yeri json parse etmek diyebilirim. Bildiğin bir json formatı parse edebilmek kolaydır. Ama dinamik olarak bir json datayı parse etmek zordur. Bunun için ilk önce attığım tarzda basit bir json datayı parse etmekle uğraş. Struct ile modelini oluştur ve bu modele göre parse etmeye çalış. Sonrasında dinamik yapmaya bakarsın.
Çok detaylı düşünürsen işin içinde boğulabilirsin. Gerçekten kapsamlı, güzel ve zor bir proje. Kolay gelsin.
Eğer proje seni çok zorluyorsa ve ödevi alan başka arkadaşların da varsa beraber kafa yürütün. Ekip olarak çözmeye çalışın.

Takıldığın kısımları bu forumda sorabilirsin. Ama bu konu gibi çok kapsamlı bir soru olmasa iyi olur. Daha spesifik bir konu aç. Mesela json parse eden kodunda hata varsa kodunla birlikte bir konu açarak yardım iste. Daha iyi cevaplar alırsın.
 

Technopat Haberler

Geri
Yukarı