Okur yazar gson

Standard

Elimdeki Collectiondaki elemanlari json olarak bi dosyaya yazayım dediğimde çok sorun yok.

Collection col = bizimElemanListesiGetir(...);
//String path = ".....";
File file = new File(path + "elemanlar.json");
file.createNewFile();
Writer writer = new FileWriter(file);
//dogrudan dosyaya json olarak gonder.
gson.toJson(col, writer);
writer.close();

fakat bunlari okurken şunu yapmaya çalışırsanız ve

File file = new File(path + "elemanlar.json");
Reader reader = new FileReader(file);
Collection col = (Collection) gson.fromJson(reader, Collection.class);

Generic olmasiyla ilgili bir sorun olursa ve java.lang.ClassCastException: com.google.gson.internal.LinkedTreeMap gibi hatalar alınırsa;

şunu denemeli


Type colType = new TypeToken<Collection>() {}.getType();
Collection col = new Gson().fromJson(reader, colType );

Burdaki Type java.lang.reflect.Type ve TypeToken da com.google.gson.reflect.TypeToken .

Javascript, nesne ( object )

Standard

Javascriptte nesne oluşturmak için birkaç yol var.
new Object()
Örnek bir kullanım:

var obj = new Object();
obj.baslik = "yazi"
obj.yaz = function () { alert(this.baslik) }
obj.yaz();

JSON : {}
JSON’daki nesne gösterimi de aynı amaç için kullanılabilir. new Object() yerine {} ;
Mesela:

var obj = {};
obj.baslik = "yazi"
obj.yaz = function () { alert(this.baslik) }
obj.yaz();

Yukarıda boş bir nesne oluşturup, sonradan eleman eklemek yerine nesneyi tanımlarken içinde de ekleyebiliriz.

var obj = {
baslik : "ykkazi",
yaz : function () { alert(this.baslik) }
}

obj.yaz();

Class > Object
Diğer dillerden aşina olduğumuz yöntem. Önce bir sınıf tanımı yazarsınız , sonra bu sınıfın bir örneğini oluşturursunuz. Sınıf (class) yazamı ise bir fonksiyon ifadesi.

Mesela:

var clazz = function() {
this.baslik = "baslik"
this.yaz = function () { alert(this.baslik) }
}
var obj = new clazz();

obj.yaz();

Bu da ekistiradan
Pratikte bir faydası olur mu bilmem, bunu da yazıyı uzatsın diye uyduralim :P. Yukarıda sınıf tanımlama ve örneğini oluşturmanın birleştirilmesi. Bir sınıf adı yazmanıza gerek yok. isimsiz bir sınıfın örneğini oluşturma.

var obj = new ( function(){
this.baslik = "baslikkkkkkkkkkkkk"
this.yaz = function () { alert(this.baslik) }
}
);

obj.yaz();