Vinnie’nin mutfağından : Ortaya karışık Java Script Engine, JSON, Web Service, Google Maps

jsp, genel, ajax, webservice, webservis, java September 14th, 2008

VinnieMerhabalar,

Bu yazımızda  Json objesi döndüren bir internet web servisi kullanacağız. Bunu Json’dan Java dönüşümünü yapan bir kütüphane ile değil Java 6 ile gelen Script Motorunu kullanarak yapacağız.

Önce Json’ın ne olduğuna bakalım:

Json aslında bir Javascript kodudur. Javascipt olarak çalıştırıldığında nesnelere, dizilere vb dönüşür, Javascript artık yaygın olduğu için bu yöntem nesnelerin Serialization işleminde yani String olarak sistemden sisteme aktarılmasında kullanılır. Bir Json cümlesi şuna benzer:
[’1′,{a:{b:’c'}, b:1}]

Burada [] işaretleri bir diziyi tanımlar, bu dizinin ilk elemanı metin olarak ‘1′ nesnesi, ikinci elemanı ise “Map”tir. “Map”ler anahtar değer çifterini tutmaya yarar. Burada “a” anahtarı yine bir Map tutmakta b anahtarının karşılığında ise numara olarak 1 vardır.

Şimdi bu nesneyi parse edelim:
Scriptable o = (Scriptable) new javax.script.ScriptEngineManager().getEngineByExtension(”js”)
.eval(”$=[’1′,{a:{b:’c'}, b:1}]”);

Burada o nesnesi objemizin dönüşmüş halini barındırıyor. Scriptable interface’ini kullanarak özelliklere erişebiliyoruz:

Object x = ((Scriptable)((Scriptable) o.get(1, null)).get(”a”, null)).get(”b”, null);

Bu şekilde nesnemizin  özelliklerine de eriştikten sonra internetten Json döndüren bir servisi kullanabiliriz.

Moha Geo, internette IP ile ilgili yer bilgilerini coğrafi olarak enlem ve boylam da dahil olmak üzere Json objesi olarak döndüren bir sevise sahip.

Öncelikle buradan IP’ye ait bilgileri alalım:

String json = new BufferedReader(new InputStreamReader((InputStream)new URL(”http://geoinfo.mohanjith.net/api2/?ip=” + theIP).getContent())).readLine();

Sonrasında ise bu Json cümlesini js olarak çalıştıralım ve Scriptable nesnesine ulaşalım:

Scriptable o = (Scriptable) new javax.script.ScriptEngineManager().getEngineByExtension(”js”).eval(”$=” + json);

Buradan enlem ve boylam bilgilerini alalım:

Scriptable x = (Scriptable) ((Scriptable)((Scriptable) o.get(”_items”, null)).get(”Coordinates”, null)).get(”_items”, null);
System.out.println(x.get(”Latitude”, null));
System.out.println(x.get(”Longitude”, null));

Evet hepsi bu kadar. Bu bilgiye ulaştıktan sonra kendimize ziyaretçinin geldiği noktayı gösteren google frame’i olan bir web sayfası yapmak için bu bilgileri JSP içinde aldığımızı varsayarak aşağıdakikodu eklemeliyiz:

<iframe width=”425″ height=”350″ frameborder=”0″ scrolling=”no” marginheight=”0″ marginwidth=”0″ src=”http://maps.google.com/?ie=UTF8&ll=<%=latitude %>, <%=longitude%>&z=10&output=embed&s=AARTsJqzARj-Z8VnW5pkPMLMmZbqrJcYpw”></iframe>

İşte hepsi bu kadar hepimize afiyet olsun.


Social Bookmarking
Add to: Mr. Wong Add to: Digg Add to: Del.icio.us Add to: Reddit Add to: StumbleUpon Add to: Slashdot Add to: Netscape Add to: Furl Add to: Yahoo Add to: Google Add to: Technorati Add to: Newsvine Add to: Ma.Gnolia



Başka Manyak Konular


Lütfen Yorumlarınızı bizimle paylaşın.

Leave a Reply

Site Navigation

Categories

Archives

Meta

Recent Enteries

Recent Comments

FireStats iconPowered by FireStats