Java JSON ile Döviz Uygulaması Yapımı, başlığını belirlerken ve giriş cümlesine nasıl başlayacağım konusunda aklımda hep bir soru işareti olsa da, sizleri, sıkmak istemediğimden ve konunun işleyişine bir an önce devam etmek istediğimden dolayı sizleri fazla tutmadan bu projemizin konusu olan Java Json ile döviz uygulaması yapımı kararını nasıl aldığımı anlatmak istiyorum.
Java Projelerin Doğuşu
Bu kararımı alırken her zaman bireysellik yerine “ekip” kavramına ve ilk yazılarımda sürekli dile getirdiğim “birlikte” kelimesinden yola çıkarak sınıf arkadaşlarım ile birlikte küçük bir grup oluşturarak bu projeleri sürekli hale getirmek için karar aldık. Bu kararımızı alırken bizi en çok korkutan olayların üzerine gitmek ve kervan yolda düzülür atasözüne uymak için ilk proje olarak java ile döviz uygulaması yapımı fikri ortaya atıldı. Bu proje fikri ile artık başlamaya hazırdık, biz projelerden değil artık projeler bizden korkmalıydı 😄.
Kararın alındığı zaman araştırma yapmak için birçok yöntem olduğunu ve bu yöntemlerin ne yazık ki Java diline ait Türkçe bir kaynak olarak anlatılmadığının farkına vardım direkt yapılacaklar listesinde olan bir maddenin üstünü karalamak için bu yazıya kadar geçen 26 yazılık ve ilk yazımdan itibaren geçen 5 haftalık geçen zaman sonunda Java Projeler kategorisini oluşturdum. 👏🏻
📣 İlerleyen zamanlarda en azından bu süreci bir sistematiğe oturttuğumuz zaman sizler ile fikir alışverişi yapmak, proje ekiplerinde bulunmak ve hatalarımızdan birlikte ders çıkartmak için bir topluluğa katılmayı veya bu topluluğu kurma düşüncesindeyim. Bu düşüncem hakkında görüşlerinizi yorum olarak benimle paylaşırsanız gerçekten sevinirim diyerek projemizi oluşturmaya başlayabiliriz.
İlk Adım: Karar Verme
Öncelikle projenin anahtar kelimesi olan döviz uygulaması kavramına odaklanalım. Bu uygulamayı yapabilmem için öncelikle bazı verilere sahip olmam ve o verileri işlemem gerekiyor. Peki bu gerekli anlık döviz bilgilerini hangi yöntemler ile alabilirim bunu araştırmam ve projem için en doğru çözüme karar vermeliydim. Anlık olarak döviz bilgilerini çekmek için önümde bazı seçenekler vardı, bu seçenekleri şu şekilde sıralayabilirim;
- JSON
- JSOUP
- XML
- Java RSS
Önüme çıkan bazı seçenekler bu şekildeydi ve benim kullanım yapıma, projeye katacağı esneklik ve sürdürülebilirliği daha fazla olduğunu düşündüğümden dolayı başlıktan da görebileceğiniz üzere JSON ile döviz uygulaması yapımı kararını verdim. Bu kararımı verdikten sonra JSON kavramını programıma tanıtımının nasıl yapılacağını, json ile veri çekmek ve json dosyasından veri okuma gibi konularda araştırmalarıma başladım. Bu konu üzerinde öğrendiğim bilgileri başlıklar halinde sizlere anlatacağım merak etmeyin.
Kendinizi hazır hissediyorsanız kemerlerinizi bağlayın, veriyi nasıl alacağımızın kararını verdiğimize göre json ile döviz uygulaması yapımına başlayabiliriz.
Java Json ile Döviz Uygulaması Yapımı
Proje için gerek duyduğumuz veriyi hangi yöntemle elde edeceğimize karar verdiğimize göre, bu veriyi nereden elde edeceğime karar vermem ve nasıl işleyeceğimi öğrenmem gerekiyor. Bunun için yaptığım aramalar sonucunda bu işlemi gerçekleştirebilmem için maven kavramına göz atmam gerekiyor.
Bu Maven kavramını ilerleyen zamanlarda yazmak istediğim ve daha detaylı incelemek istediğim bir olay olmasına rağmen kısaca Java Maven kavramı hakkında öğrendiğim bilgileri şu şekilde sizlerle paylaşabilirim:
- Projemizin okunabilirliğini arttırarak, kaliteli bir proje alt yapısı oluşturmak.
- Projemizin bağımlı olduğu kütüphaneleri kolayca projelerimize tanıtabiliriz.
- Proje hakkında meta bilgilerini güncelleyebilir veya tutabiliriz
- Herhangi bir build işlemi gerçekleştireceğimiz zaman kolay bir şekilde projeyi derlememize imkan sağlar.
Bu araştırmam sonucunda elde ettiğim bilgileri analiz ettikten sonra Maven kavramının sağlamış olduğu belli başlı avantajlar bu şekilde karşıma çıktı. Projemizin bağımlılıklarını kontrol etmemizi, belirlememize imkan vermesi ve projemizin alt yapısını oluşturacak bağımlılığı tanıtmam gerektiği için pom.xml
dosyasına erişerek gerekli bağımlılığımın tanıtımını gerçekleştirmem gerekiyor.

Yukarıdaki görselde yer alan adımları izleyerek bir maven projesi oluşturdum. Oluşturmuş olduğum bu proje üzerinde pom.xml dosyasına girdikten sonra projemin json ile veri çekmek ve json dosyasından veri okuma işlemini gerçekleştirebilmesi için burada yer alan dosyayı projeme tanıtım işlemini gerçekleştirdim. Bu tanıtım işlemi için uygulamış olduğum 2 basit adım şu şekilde;
#1
Öncelikle açmış olduğum maven projesi içerisinde yer alan pom.xml
dosyası içerisine girerek dependencies
etiketlerinin tanıtımını gerçekleştirdim. Bu etiketler projemin bağımlı olduğu değerlerin tutulacağı genel etiket yapısı olarak düşünebilirsiniz.
#2
Etiketleri yazdıktan sonra yukarıda vermiş olduğum adreste paylaşılan bağımlılık kodlarını aldıktan sonra projeme tanıtımını gerçekleştirdim.
Bu işlemler sonucunda döviz uygulamamamın pom.xml dosyası şu hale geldi:
<?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>org.doviz</groupId> <artifactId>firstDovizKuru</artifactId> <version>1.0-SNAPSHOT</version> <properties> <maven.compiler.source>15</maven.compiler.source> <maven.compiler.target>15</maven.compiler.target> </properties> <dependencies> <!-- https://mvnrepository.com/artifact/com.googlecode.json-simple/json-simple --> <dependency> <groupId>com.googlecode.json-simple</groupId> <artifactId>json-simple</artifactId> <version>1.1.1</version> </dependency> </dependencies> </project>
Java Json ile Döviz Uygulaması Yapımı başlığındaki temel kavram olan “JSON” kavramını işleyebilmek için programımızın bağımlılığını oluşturduğuma göre artık veri çekeceğim güzel bir kaynak arayışında bulunmam gerekiyor. Bu işlemi nasıl gerçekleştirdiğim ve json ile veri çekmeyi nasıl gerçekleştirdiğimi bir alt başlıkta gelin birlikte inceleyelim.
JSON ile Veri Çekmek
Yapmak istediğim döviz uygulamasının temel mantığında anlık olarak, belli periyotlar içerisinde güncellenecek ve sorgulama esnasında bana alım, satım, verinin güncellenme zamanı gibi bilgilerin verilmesini istediğim için buna uygun bir kaynak arayışına girdim. Json ile veri çekmek için aradığım bu kaynağı fazla aramadan, bir kaç keyword ile arama yaptığım zaman uygulamam için en uygun json verisine ulaştım.
Java Json ile döviz uygulaması yapımı konusunun baş rolü olan json verisini bulduğumuza göre bu veriyi projem üzerinde nasıl kullanacağımı, hangi şekilde işleyeceğimi kararlaştırmam gerekiyordu ve belki de bir çok yöntemi bulunan bu veri çekme olayını kendimce en ideal yöntem ile çözecek adımları izlemeye başladım. Json ile veri çekmek için izlediğim bu adımlar şu şekildeydi:
- Aklımdaki fikri uygulamak için öncelikle bu işi yönetebileceğim, gerekli verilerin yazdırılmasını sağlayabileceğim,
JSONWrite
isimli bir sınıf oluşturdum. Bu sınıf içerisinde yapacağım işlemin direkt proje başladığı zaman çalışmasını, istediğim zaman bir metot aracılığı ile benim çağıracağım ve zamanlayıcı kuracağım içinbaslat()
isminde bir metot tanımlaması gerçekleştirdim. - Oluşturmuş olduğum metot içerisine işlemlerimin hata sonuçları olacağından dolayı try-catch yapısını oluşturduktan sonra projemizin ana kolonunu oluşturacak json verisini çekeceğim internet adresini
URL
ile tanıtımını gerçekleştiriyorum. - Json verisini çekeceğim internet adresini belirledikten sonra o adrese bağlantı sağlayabilmek için
HttpURLConnection
tanımlamasını yaptıktan sonra bağlantı isteğimin geri dönüş cevabını öğrenmek için ekrana geriye dönen değeri yazdırmasını istiyorum.URL url = new URL("https://finans.truncgil.com/v3/today.json"); // Veriyi Alacağımız URL Giriyoruz. HttpURLConnection hr = (HttpURLConnection) url.openConnection(); System.out.println(hr.getResponseCode()); //Bağlantı Cevap Numarasını öğreniyoruz.
- Bağlantı sağladığımız internet adresinde elde ettiğimiz byte türündeki veriyi okumak için
InputStream
ve arkasından bu gelen veriyiBufferedReader
ile işleyecek tanımlamaları gerçekleştirdim.InputStream im = hr.getInputStream(); BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(im));
- Okuduğumuz bu veriyi projemiz içerisinde bir dosya içerisinde tutmak ve okuduğumuz veriyi yazdıracağımız dosyanın yolunu
File
tanımlamasını gerçekleştirdim. Bu tanımlamadan sonra okunan veriyi yazdırmak için gerekliBufferedWriter
tanımlamasını gerçekleştirdikten sonra okunan veriyi bir değişkende tutmak için string veri tipine aitveri
isminde bir değişken tanımlamasını gerçekleştirdim.BufferedWriter bufferedWriter = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(file))); String veri = (String) bufferedReader.readLine();
- Okuduğumuz ve “veri” ismindeki değişkenimize tanımladığımız değerin null bir değer döndürene kadar yazdırması için
while döngüsü
oluşturdum ve gerekli yazdırma işlemlerini gerçekleştirecek işlemleri oluşturdum. En sonunda yapmak istediğim işlemin bittiğini göstermek için tüm açık işlemlerimi kapatmak için verilerini kapatıyorum.
Genel olarak json ile veri çekmek için yazmış olduğum kodun teorik anlatımı bu şekilde olsa da anlamlandırabilmeniz için bu alana kadar yazmış olduğum kod şu şekildedir;
import java.io.*; import java.net.HttpURLConnection; import java.net.URL; //import java.util.Timer; Görev metodunu oluştururken kullanacağız. //import java.util.TimerTask; Görev metodunu oluştururken kullanacağız. public class JSONWrite { //static int saatBasi = 0; Görev metodunu oluştururken kullanacağız. public void baslat(){ // JSON Dosyasındaki Verileri İnternet Sitesinden Çekerek "Veri.JSON" dosyasına yazdıracağız. try{ URL url = new URL("https://finans.truncgil.com/v3/today.json"); // Veriyi Alacağımız URL Giriyoruz. HttpURLConnection hr = (HttpURLConnection) url.openConnection(); //System.out.println(hr.getResponseCode()); //Bağlantı Cevap Numarasını öğreniyoruz. if(hr.getResponseCode() == 200){ // Eğerki bağlantı cevap numaramız bize lazım olan 200 ile aynı olduğu zaman işlemi gerçekleştiriyoruz. InputStream im = hr.getInputStream(); BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(im)); File file = new File("C:/Users/winem/Desktop/Projeler/firstDovizKuru/src/main/java/dovizVeri.JSON"); // Dosya Yolunu Değiştirmeyi Unutmayın. BufferedWriter bufferedWriter = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(file))); String veri = (String) bufferedReader.readLine(); while (veri!=null){ bufferedWriter.write(veri); // Okunan Veriyi Yazdırıyoruz. bufferedWriter.newLine(); // Bir Aşağı Satıra Geçmesini İstiyoruz. bufferedWriter.flush(); // Okunan verileri dosyada görmemiz için aktarım işlemini sağlıyor. veri = bufferedReader.readLine(); // Yeni Veri Okutuyoruz. } // İşlemler Bitince Okuma ve Yazma İşlemlerini Kapatıyorum. bufferedWriter.close(); bufferedReader.close(); im.close(); } } catch (Exception e){ System.out.println("JSONWrite Sınıfı Exception Hatası.\n"+e); } } JSONWrite(){ baslat(); // Main sınıfına tanımlama yaptıktan sonra ilk başta dosya oluşmasını istiyorum. } } }
Normal şartlarda buraya kadar yazdığımız kod içerisinde json veri çekmek için kullanacağımız internet adresini tanıtıp bağlantı isteğinde bulunduk, bulunduğumuz isteğe gelen geri dönüşü değerlendirip veriyi okuyarak kendi projemiz içerisinde dovizVeri.JSON
dosyası içerisinde kayıt altına aldık. İşimiz bitti olarak gözükebilir ama ilerleyen zamanlarda bu projeyi geliştirmek istediğim için şimdiden temellerini atmak adına programımım açık kaldığı süre boyunca JSON verimin güncellenme sıklığına göre gidip aynı işlemlerin yapılmasını ve dosyama yazdırılmasını istiyorum.
Bunun için bir zamanlayıcı ⏱ ve bu zamanlayıcının aktif olduğunda belli bir işlemi yerine getirmesi için görev tanımlaması yapmam gerekiyor. Form özelliklerinde aklımda kalan Timer
ve TimerTask
öğelerini kullanmanın bu aşama için doğru bir karar olacağını düşünerek küçük bir prototip zamanlayıcı ve görev tanımlaması gerçekleştirdim.
public void alertTimer(){ Timer alertTimer = new Timer(); TimerTask alertTask = new TimerTask() { @Override public void run() { if(saatBasi < 4) { System.out.println(ConsoleManager.RED + "-> Program 15 Dakkikadır Aktif." + ConsoleManager.RESET); System.out.println(ConsoleManager.BLUE + "-> JSON Bilgileri Genelde 15 Dakkikada Bir Yenilenir." + ConsoleManager.RESET); System.out.println(ConsoleManager.YELLOW + "-> Bu Yüzden JSON Bilgileri Güncellenmek İçin Program Yeniden Başlatıldı.\n" + ConsoleManager.RESET + BaseMenuCreateManager.menuAyrac); baslat(); saatBasi++; } else { System.out.println(ConsoleManager.RED + "-> Program 60 Dakkikadır Aktif. Program Kapatıldı Tekrar Çalıştırın.\n" + ConsoleManager.RESET+BaseMenuCreateManager.menuAyrac); alertTimer.cancel(); System.exit(0); } } }; alertTimer.schedule(alertTask,900000,900000); // Program başladıktan sonra 15dk sonra ilk görev başladıktan sonra her 15 dk da bir tekrar edecek. }
Json ile veri çekme işlemimizi bitirdiğimize göre artık bu çekilen veriyi işleyeceğimiz ve projemize dahil edeceğimiz aşama olan json dosyasından veri okuma işlemini nasıl gerçekleştireceğimize geçebiliriz.
JSON Dosyasından Veri Okuma
İşimizin temel kolonunu veriyi çekerek tamamladık, şimdi ise bu kolonun etrafında yapıyı inşa etmemiz ve kolonu doğru ve anlamlı bir şekilde kullanmamız gerekiyor. Açıkçası bu json dosyasından veri okuma işlemini nasıl, hangi şekil ile yapmam gerektiğini aslında projeye ilk başlarken pom.xml üzerinde belirttiğimiz bağımlılık ile çözmüştük. İşin anahtar kelimesi JSONParser‘ın ta kendisiydi. Anahtar olarak gördüğümüz JSONParser tanımlaması ile JSON dosyasından veri okuma işlemini sorunsuz ve doğru bir şekilde gerçekleştirebileceğiz.
Json dosyasından veri okuma işlemi için uyguladığım aşamalar bir önceki işlemim kadar uzun ve karışık değil, sadece gerekli görülen bazı tanımlamaları yaptıktan sonra sorgu işleminin gerçekleştirilmesini sağlamış olacağız. Json dosyasından veri okuma işlemi için uygulamış olduğum aşamalar şu şekildedir:
- İşlemlerimin ayrı sınıflarda olmasını ve katmanlar halinde ayrılmasını sevdiğim için bu işlemim için
JSONReader
isminde bir sınıf oluşturdum. Daha sonra oluşturmuş olduğum sınıf içerisinde json dosyasından veri okuma işleminden sonra elde edilen değerlerin tutulacağı değişkenlerin tanımlamasını gerçekleştirdim. - Gerekli tanımlamalarım bittikten sonra işlemimin gerçekleştirilmesini sağlayacak
showMe
isminde bir metot tanımlaması gerçekleştirdikten sonra metot içerisine JSONParser tanımlamasını yaptım. - Tanımlama işlemlerim bittikten sonra sorgulama işlemim esnasında bir hata ile karşılaşabileceğim için try-catch bloklarını oluşturuyorum. Daha sonra json dosyasından veri okumak için gerekli olan okunacak dosyanın tanımlamasını gerçekleştiriyorum.
- Okunan verilerimi bir json objesi içerisinde tutmak için sırasıyla
Object
tanımlaması daha sonraJSONObject
tanımlamalarını gerçekleştirdim.FileReader fileReader = new FileReader("C:/Users/winem/Desktop/Projeler/firstDovizKuru/src/main/java/dovizVeri.JSON"); Object obje = jsonParser.parse(fileReader); JSONObject jsonObject = (JSONObject) obje;
- Buraya kadar gerçekleştirdiğim işlem içerisinde json dosyasında bulunan verileri okumaya başlayabiliriz fakat JSON dizilerini okuyabilmemiz için
JSONArray
tanımlamasını yaptıktan sonra okuyacağımız veriyi bu dizi içerisine eklemek için “add” metodu ile verimizi dizi içerisine ekledim.JSONArray jsonArray = new JSONArray(); jsonArray.add(jsonObject.get(hangiVeri)); //hangiVeri bir değişkendir. "USD,EUR,..." gibi değerlerde yazabilirsiniz bunun yerine.
- Elde ettiğimiz dizi içerisindeki verileri okuyabilmek için basit bir for döngüsü kurarak verilerimi okuyarak ilk başta tanımladığım değişkenlere atamasını gerçekleştiriyorum.
- İşlemlerimiz bittiğinde öğrendiğimiz bilgileri kullanmak ve kullanıcıya gerekli sorgulamayı göstermek için ekrana yazdırma işlemlerini gerçekleştirerek, dosya okumak için açmış olduğum FileReader öğesini “close” metodu ile kapatıyorum.
Görüldüğü gibi başta tanımladığımız bağımlılık sayesinde kullandığımız JSONParser sayesinde json dosyasından veri okuma işlemi oldukça basit bir hale geliyor. Her aşamada olduğu yazmış olduğum kodu sizlerle aşağıda paylaşıyorum. Her madde sonunda kodu incelerseniz akılda kalıcılığının daha fazla olacağını düşünüyorum.
import org.json.simple.JSONArray; import org.json.simple.JSONObject; import org.json.simple.parser.JSONParser; import org.json.simple.parser.ParseException; import java.io.FileReader; import java.io.IOException; public class JSONReader { static String dovizAlis = null; static String dovizSatis = null; static String degisimMiktari = null; static String jSONGuncelleme = null; public void showMe(String hangiVeri) { // JSON Tanımlaması : JSONParser jsonParser = new JSONParser(); // Dosya Okuma: try { FileReader fileReader = new FileReader("C:/Users/winem/Desktop/Projeler/firstDovizKuru/src/main/java/dovizVeri.JSON"); Object obje = jsonParser.parse(fileReader); JSONObject jsonObject = (JSONObject) obje; jSONGuncelleme = (String) jsonObject.get("Update_Date"); // JSON Tablosunu Array olarak açma işlemi: JSONArray jsonArray = new JSONArray(); jsonArray.add(jsonObject.get(hangiVeri)); for (int i = 0; i < jsonArray.size(); i++) { JSONObject currency = (JSONObject) jsonArray.get(i); dovizAlis = (String) currency.get("Buying"); dovizSatis = (String) currency.get("Selling"); degisimMiktari = (String) currency.get("Change"); } System.out.println(ConsoleManager.GREEN + "-> JSON Güncelleme Zamanı: " + ConsoleManager.RESET + jSONGuncelleme); // JSON Güncelleme Zamanını Yazdırtırıyoruz. System.out.println(ConsoleManager.RED + "-> Alış Miktarı: " + ConsoleManager.RESET + dovizAlis + ConsoleManager.CYAN + "\n-> Satış Miktarı: " + ConsoleManager.RESET + dovizSatis + ConsoleManager.YELLOW + "\n-> Degişim Miktarı: " + ConsoleManager.RESET + degisimMiktari); // İşlemlerin Kapatılması: fileReader.close(); } catch (IOException e) { System.out.println("IOException Hatası !\n" + e); } catch (ParseException e) { System.out.println("ParseException Hatası !\n" + e); } } }
Bu aşamaya kadar json ile veri çekmek, json dosyasından veri okuma gibi işlemleri gerçekleştirdik fakat henüz bir kod çıktısı göremedik. Doğru yolda olduğumuzu teyit etmek ve yazdığımız kodların çıktısını görerek motive olmak için Main sınıfımıza gelerek gerekli tanımlamaları sağladıktan sonra programımı çalıştırıyorum.
Kod Çıktısı:

Java Json ile Döviz Uygulaması Yapımı işlemlerimizin temel yapısı buraya kadardı. Bundan sonraki aşamalar biraz kullanıcının göz zevkine ve bu projenin sunumu için bazı hazırlıklar ve süslemeler gerçekleştirmem gerektiği için bundan sonraki aşamalar biraz daha hızlı bir şekilde geçeceğim alanlar olacak.
Uygulamanın Sunum Aşaması
Bu başlığı gördüğünde aklınıza bir form yapısı gelebilir ama şuan için konsol üzerinde çalışmanın beni daha çok hızlandıracağını düşündüğüm için konsolun sağlamış olduğu imkanları kullanarak elimden geldiğince göze hoş gözüken bir şablon oluşturmak istiyorum. Sadece bu süsleme olayları değil aynı zamanda uygulamayı kullanacak kişiye kolaylık sağlaması ve bir, iki tuş ile hemen öğrenmek istediği döviz birimine ulaşmasını ve programın kimliğini oluşturacak menü yapıları oluşturmam gerektiği için bazı işlemler gerçekleştirdim.
Bu gerçekleştirmiş olduğum aşamalardan ilki konsol üzerinde renkli yazılar yazmama imkan veren tanımlamayı ve konsol üzerinde henüz sorunu geçici olarak çözmüş olsamda bir sonraki sorgu için konsolun temizlenme işlemlerini gerçekleştirecek ConsoleManager
sınıfının tanımlamasına göz atalım.
Konsol Yönetimini Kuralım
Programımızın sıradanlığını bozarak renkli, kalın ve dikkat çekici bir şekilde yazılar ile geri dönüşler verebilmek için static tanımlama ile bazı değişkenler oluşturdum. Bu oluşturmuş olduğum değişkenlere ve geçici olarak çözüm bulduğum konsol temizleme işlemine aşağıdaki kod yapısından ulaşabilirsiniz.
public class ConsoleManager { BaseMenuCreateManager baseMenuCreateManager = new BaseMenuCreateManager(); // Konsol Renkli Yazı Yazmak İçin Gerekli Tanımlamalar: public static final String RESET = "\033[0m"; // Text Reset // [1;xxm" kısmındaki 1'i değiştirerek altı çizgili, normal gibi çeşitli değişiklikler yapabilirsiniz. public static final String BLACK = "\033[1;30m"; // Siyah public static final String RED = "\033[1;31m"; // Kırmızı public static final String GREEN = "\033[1;32m"; // Yeşil public static final String YELLOW = "\033[1;33m"; // Sarı public static final String BLUE = "\033[1;34m"; // Mavi public static final String PURPLE = "\033[1;35m"; // Mor public static final String CYAN = "\033[1;36m"; // Turkuaz public static final String WHITE = "\033[1;37m"; // Beyaz // Konsol Temizleyici Metot Tanımlamamız: static void clear() { /* try { new ProcessBuilder("cmd","/c","cls").inheritIO().start().waitFor(); } catch (Exception e){ System.out.println("Konsol Temizlenirken Hata İle Karşılaştım.\n"+e); }*/ // Linux Kullanımında Açabilirsiniz. for (int i = 0; i < 100; i++) { System.out.println(" "); } baseMenuCreateManager.welcome(); } }
Evet, java json ile döviz uygulaması yapımı için gerekli olan renklendirmeyi ve yazılarımızın dikkat çekiciliğini arttırmak için kullanacağımız kalınlaştırma için gerekli tanımlamalarımızı yaptığıma göre artık sıradaki aşamamız program başlatıldıktan sonra bizi karşılayacak menü yapısını oluşturmaya geldi.
Projemizin Menüsünü Oluşturalım
Tam olarak aslında menü oluşumu haricinde giriş ekranımızda bizi karşılayacak bilgilerinde yazılmasını istediğim giriş karşılamasını da sağlama amacı ile gerekli metotlarımın oluşturulmasına başladım. Bu metotlar tamamen sizlerin kişisel zevklerinize kalmış bir detay olduğu için anlatımım içerisine dahil etmedim ama yazmış olduğum kodlara ve bunun sonucundaki çıktısına aşağıdan göz atabilirsiniz.
import java.text.SimpleDateFormat; import java.util.GregorianCalendar; import java.util.Scanner; public class BaseMenuCreateManager { static String menuAyrac = ConsoleManager.CYAN+new String(new char[25]).replace("\0","-")+ConsoleManager.RESET; SimpleDateFormat zamanSekil = new SimpleDateFormat("d/M/y H:m:s"); GregorianCalendar tarihVerisi = new GregorianCalendar(); Object guncelZaman = zamanSekil.format(tarihVerisi.getTime()); Scanner scanner = new Scanner(System.in); // Hoşgeldiniz ve Ön Bilgi Ekranı. void welcome(){ System.out.println(menuAyrac); System.out.println(ConsoleManager.YELLOW+"< Döviz Console Uygulaması >\n"+ConsoleManager.RESET+menuAyrac); System.out.println(ConsoleManager.RED+"-> Uygulama Yapımcısı: "+ConsoleManager.RESET+ConsoleManager.GREEN+"Emre Çelen"+ConsoleManager.RESET); System.out.println(ConsoleManager.RED+"-> Uygulama Saati: "+ConsoleManager.RESET+ConsoleManager.GREEN+ guncelZaman+ConsoleManager.RESET); System.out.println(menuAyrac); } // Menü Seçenekleri: void startMenu(){ String select; String ayrac = ConsoleManager.BLACK+"-"+ConsoleManager.RESET; String numaralar[] = {"[1] ","[2] ","[3] ","[4] "}; System.out.println(ConsoleManager.RED+numaralar[0]+ConsoleManager.RESET+ayrac+ConsoleManager.BLUE+" Döviz Birimlerini Göster\n"+ConsoleManager.RESET +ConsoleManager.RED+numaralar[1]+ConsoleManager.RESET+ayrac+ConsoleManager.BLUE+" Döviz Sorgulaması Gerçekleştir\n"+ConsoleManager.RESET +ConsoleManager.RED+numaralar[2]+ConsoleManager.RESET+ayrac+ConsoleManager.BLUE+" JSON Bilgilerini Güncelle\n"+ConsoleManager.RESET +ConsoleManager.RED+numaralar[3]+ConsoleManager.RESET+ayrac+ConsoleManager.BLUE+" Programı Kapat"+ConsoleManager.RESET); System.out.println(menuAyrac); System.out.print(ConsoleManager.RED+"-> Hangi İşlemi Gerçekleştirmek İstiyorsunuz: "+ConsoleManager.RESET); select = scanner.nextLine(); System.out.println(menuAyrac); selectMenu(select); } // Seçilen Menüye Yönlendirme: void selectMenu(String select){ CurrencyUnitsManager currencyUnitsManager = new CurrencyUnitsManager(); if(select.equalsIgnoreCase("bir")||select.equals("1") || select.equalsIgnoreCase("Döviz Birimlerini Göster")){ currencyUnitsManager.currencyRead(); currencyUnitsManager.currencyInfoMenu(); currencyUnitsManager.currencyInfoBox(); restartMenu(); } else if(select.equalsIgnoreCase("iki")||select.equals("2") || select.equalsIgnoreCase("Döviz Sorgulaması Gerçekleştir")){ currencyUnitsManager.currencyInfoMenu(); currencyUnitsManager.currencyInfoBox(); restartMenu(); } else if(select.equalsIgnoreCase("üç")||select.equals("3") || select.equalsIgnoreCase("JSON Bilgilerini Güncelle")){ JSONWrite jsonWrite = new JSONWrite(); System.out.println(ConsoleManager.GREEN+"-> JSON Bilgileri Manuel Bir Şekilde Güncellendi.\n"+ConsoleManager.RESET+menuAyrac); restartMenu(); } else if(select.equalsIgnoreCase("dört")||select.equals("4") || select.equalsIgnoreCase("Programı Kapat")){ System.out.println(ConsoleManager.YELLOW+"-> Program Sonlandırıldı.\n"+ConsoleManager.RESET+menuAyrac); System.exit(0); } else { System.out.println(ConsoleManager.YELLOW+"-> Tanımsız Bir Değer Girdiniz. Program Sonlandırıldı.\n"+ConsoleManager.RESET+menuAyrac); } } void restartMenu(){ String karar; System.out.print(ConsoleManager.YELLOW+"-> Ana menüye tekrar dönmek için"+ConsoleManager.RESET+ConsoleManager.GREEN+" [Y]"+ConsoleManager.RESET +ConsoleManager.YELLOW+", programı kapatmak için"+ConsoleManager.RESET +ConsoleManager.RED+" [N]"+ConsoleManager.RESET+ ConsoleManager.YELLOW+" tuşuna basın."+ConsoleManager.RESET); System.out.print(ConsoleManager.RED+"\n-> Kararınız: "+ConsoleManager.RESET); karar = scanner.nextLine(); System.out.println(menuAyrac); if(karar.equalsIgnoreCase("y")){ ConsoleManager.clear(); startMenu(); } else if(karar.equalsIgnoreCase("n")){ System.out.println(ConsoleManager.RED+"-> Program Sonlandırıldı."+ConsoleManager.RESET); System.out.println(menuAyrac); System.exit(0); } else{ System.out.println(ConsoleManager.RED+"-> Tanımsız Bir Değer Girdiniz."+ConsoleManager.RESET); System.out.println(menuAyrac); System.exit(0); } } }
Kod Çıktısı:

BaseMenuCreateManager
sınıfımızın tanımlamasını yaptığımıza göre son olarak yapmış olduğumuz konsol yapısına işlevsellik katacak, gerekli sorgulama taleplerini aldıktan sonra json dosyasından veri okuma işlemi için ilgili aramayı yapacak döviz birimlerinin yönetimini gerçekleştireceğimiz CurrencyUnitsManager
sınıfını oluşturmaya başlayabiliriz.
Döviz Birimlerini Yönetelim
Son olarak json ile veri çekmek için kullandığım kaynaktan hangi döviz birimlerinin verilerini kullanıcıya sunmama karar vermek kaldı. Bu aşama içerisinde en çok merak edildiğini düşündüğüm bazı para birimlerinin json yapısındaki veri isimlerini unutmamak ve kullanıcıya bu bilgileri sunmak için bir enum kavramı tanımladım. Daha önce java’da enum kavramı içeriğime göz atmadıysanız ilgili içeriğime giderek bu işlemi nasıl yaptığımı detaylı bir şekilde inceleyebilirsiniz.
Para birimlerine karar verdiğime göre artık bu para birimlerinin sorgulanması ve sorgulanan para biriminden alınan verileri kullanıcıya iletimini sağlama aracında köprü görevi görecek metot tanımlamalarını gerçekleştirdim. Bu metotların oluşturulması tamamen sizin kişisel zevkinize kalmış bir olay olduğu için yazılarını veya yapısını değiştirmeniz herhangi bir sorun ile karşılaşmanıza sebebiyet sağlamayacaktır.
Bu son aşamamızda yazmış olduğum kod parçası ve çıktısını aşağıda görebilirsiniz.
import java.util.Scanner; // Çekeceğimiz Dövizlerin JSON isimlerini aklımızda tutmak için enum tanımlaması gerçekleştirdik. enum currencyUnits{ USD("Amerikan Doları"), EUR("Euro"), GBP("Sterlin"), CHF("İsviçre Frangı"), CAD("Kanada Doları"), RUB("Rus Rublesi"), KWD("Kuveyt Dinarı"); private String moneyName; currencyUnits(String moneyName){ this.moneyName = moneyName; } public String getMoneyName() { return moneyName; } } public class CurrencyUnitsManager { // Döviz Birimlerini Yazdıracağımız Metot: void currencyRead(){ int count=1; String ayrac = ConsoleManager.BLACK+"-"+ConsoleManager.RESET; System.out.println(ConsoleManager.YELLOW+"< Döviz Birimleri >\n"+ConsoleManager.RESET+BaseMenuCreateManager.menuAyrac); for(currencyUnits c:currencyUnits.values()){ System.out.println(ConsoleManager.RED+"["+count+"] "+ConsoleManager.RESET+ayrac+ConsoleManager.BLUE+" ["+c.name()+"] "+ConsoleManager.RESET+ ConsoleManager.YELLOW+c.getMoneyName()+ConsoleManager.RESET); count++; } System.out.println(BaseMenuCreateManager.menuAyrac); } // Kullanıcıdan Döviz Birim Girişini İsteyeceğimiz Metot: String currencyInfo; JSONReader jsonReader = new JSONReader(); void currencyInfoMenu(){ Scanner scanner = new Scanner(System.in); System.out.print(ConsoleManager.RED+"-> Sorgulamak İstediğiniz Para Birimi: "+ConsoleManager.RESET); currencyInfo = scanner.nextLine(); System.out.println(BaseMenuCreateManager.menuAyrac); } void currencyInfoBox(){ if(currencyInfo.equalsIgnoreCase("USD") ||currencyInfo.equals("1") || currencyInfo.equalsIgnoreCase("Amerikan Doları")){ System.out.println(ConsoleManager.BLUE+"< Amerikan Doları Bilgileri > \n"+ConsoleManager.RESET+BaseMenuCreateManager.menuAyrac); jsonReader.showMe("USD"); System.out.println(BaseMenuCreateManager.menuAyrac); } else if(currencyInfo.equalsIgnoreCase("Eur") ||currencyInfo.equals("2") || currencyInfo.equalsIgnoreCase("Euro")){ System.out.println(ConsoleManager.BLUE+"< Euro Bilgileri > \n"+ConsoleManager.RESET+BaseMenuCreateManager.menuAyrac); jsonReader.showMe("EUR"); System.out.println(BaseMenuCreateManager.menuAyrac); } else if(currencyInfo.equalsIgnoreCase("GBP") ||currencyInfo.equals("3") || currencyInfo.equalsIgnoreCase("Sterlin")){ System.out.println(ConsoleManager.BLUE+"< Sterlin Bilgileri > \n"+ConsoleManager.RESET+BaseMenuCreateManager.menuAyrac); jsonReader.showMe("GBP"); System.out.println(BaseMenuCreateManager.menuAyrac); } else if(currencyInfo.equalsIgnoreCase("CHF") ||currencyInfo.equals("4") || currencyInfo.equalsIgnoreCase("İsviçre Frangı")){ System.out.println(ConsoleManager.BLUE+"< İsviçre Frank Bilgileri > \n"+ConsoleManager.RESET+BaseMenuCreateManager.menuAyrac); jsonReader.showMe("CHF"); System.out.println(BaseMenuCreateManager.menuAyrac); } else if(currencyInfo.equalsIgnoreCase("CAD") ||currencyInfo.equals("5") || currencyInfo.equalsIgnoreCase("Kanada Doları")){ System.out.println(ConsoleManager.BLUE+"< Kanada Doları Bilgileri > \n"+ConsoleManager.RESET+BaseMenuCreateManager.menuAyrac); jsonReader.showMe("CAD"); System.out.println(BaseMenuCreateManager.menuAyrac); } else if(currencyInfo.equalsIgnoreCase("RUB") ||currencyInfo.equals("6") || currencyInfo.equalsIgnoreCase("Rus Rublesi")){ System.out.println(ConsoleManager.BLUE+"< Rus Rublesi Bilgileri > \n"+ConsoleManager.RESET+BaseMenuCreateManager.menuAyrac); jsonReader.showMe("RUB"); System.out.println(BaseMenuCreateManager.menuAyrac); } else if(currencyInfo.equalsIgnoreCase("KWD") ||currencyInfo.equals("7") || currencyInfo.equalsIgnoreCase("Kuveyt Dinarı")){ System.out.println(ConsoleManager.BLUE+"< Kuveyt Dinarı Bilgileri > \n"+ConsoleManager.RESET+BaseMenuCreateManager.menuAyrac); jsonReader.showMe("KWD"); System.out.println(BaseMenuCreateManager.menuAyrac); } else { System.out.println(ConsoleManager.RED+"< Hatalı Giriş Yaptınız > \n"+ConsoleManager.RESET+BaseMenuCreateManager.menuAyrac); } } }
Kod Çıktısı:
🎯 İlk yazım içerisinde ve bu siteyi oluştururken koymuş olduğum ilk aşama projeler oluşturma eylemine kısa bir süre içerisinde başlamanın vermiş olduğu mutluluk ile yazı içeriğini fazla uzatmış olabilirim. İlk adımımızı tamamladığımıza göre artık java üzerinde “Türkçe” bir şekilde proje anlatımları ve konu anlatımlarının düzenli bir şekilde devam edeceğini söyleyebilirim.
💹 Java Json ile Döviz Uygulaması yapımı konusunda her ne kadar yazmış olduğum kod bloklarını yukarıda sizlerle teker teker paylaşmış olsamda bu projenin kodlarını GitHub üzerinden sizlerle paylaştım. GitHub hesabıma giriş yaparak java json ile döviz uygulaması yapımı proje dosyaları ulaşabilirsiniz.
Java Json ile Döviz Uygulaması Yapımı hakkında aklınıza takılan bir soru varsa veya projenin geliştirilmesinde bir öneride bulunmak istiyorsanız aşağıda bulunan yorum yap kısmından benim ile iletişime geçebilirsiniz.
Bu döviz uygulaması projesini oldukça merak uyandırıcı buldum, ellerinize sağlık.