Narisa.com: มาลองใช้ JSon ในการรับส่งข้อมูล - Narisa.com

Jump to content

Subscribe to up1's Blog        RSS Feed

มาลองใช้ JSon ในการรับส่งข้อมูล

Leave Comment
เนื่องจากระบบที่ทำอยู่นั้นมีการรับส่งข้อมูลเป็น xml format กันมานาน ซึ่งก็มักเกิดปัญหาหลายๆ อย่าง ซึ่งส่วนใหญ่เกี่ยวกับข้อจำกัดของ xml ดังนั้นจึงทดลองหา data format อื่นๆ มาลองใช้ดูบ้าง ซึ่ง 1 ในนั้นก็คือ JSon โดยชื่อนี้นักพัฒนาส่วนใหญน่าจะรู้จักและเคยใช้งานมาแล้ว โดย JSon คืออะไรนั้นสามารถดูได้ที่นี่ JSON

Quote

JSON (JavaScript Object Notation) is a lightweight data-interchange format. It is easy for humans to read and write. It is easy for machines to parse and generate. ......

ถ้าอ่านหรือศึกษา JSon มาบ้างจะเห้นว่ามันคือ text ธรรมดาที่มี format เป็นมาตรฐานและเป้นโครงสร้างที่ตายตัว มีลักษณะ 2 แบบคือ
1. key pair value
2. list

มาถึง requirement ที่ผมจะทำบ้าง
1. สร้าง end point ที่ return JSon data ออกมา โดยใช้ภาษา Java ในภาษา Java จะมี API ชื่อว่า JSON Lib Project ในการใช้งานนั้นจะมี dependency lib ดังนี้
* jakarta commons-lang 2.3
* jakarta commons-beanutils 1.7.0
* jakarta commons-collections 3.2
* jakarta commons-logging 1.1
* ezmorph 1.0.3

การใช้งานไม่ยากเท่าไร เพราะว่ามีตัวอย่างพร้อมอยู๋แล้ว วิธีที่ผมต้องการคือแปลงจาก java object ไปเป็น JSon Object ดังตัวอย่าง

Map m = new HashMap();
m.put( "data", "TEST DATA" )
net.sf.json.JSONObject obj =  net.sf.json.JSONObject.fromObject( m );


เมื่อผม print ค่าออกมาดูจะเป็นดังนี้

Quote

{"data":"TEST DATA"}


ตรงนี้เราสามารถนำ Value Class, List, Map, Java Bean มาใช้ได้ทั้งหมด ทำให้ส่วนนี้ผ่านไปได้อย่างสบายครับ

ต่อมาลองมาดูฝั่งผู้เรียกใช้งาน end point นี้บ้าง

จากระบบเก่านั้นจะใช้ AJAX ซึ่งใช้ของ Prototype JS และตัว prototype นี้ก็ support JSon อยู๋แล้วทำให้สบายมากๆ โดยสามารถดูตัวอย่างการใช้งานได้ที่นี่ Introduction to JSON

ตัวอย่างที่ผมองเขียน AJAX เพื่อเรียกใช้งานเป้นดังนี้

&lt;script language="JavaScript" src="../prototype.js" ></script>
&lt;script>
function call() {
	new Ajax.Request('http://localhost:8080/json/test_service.jsp',
	  {
		 method:'get',		 
		 onSuccess: function(transport){				
			var jsonObj = transport.responseText.evalJSON(  );		 
			alert( jsonObj.data );						  
		}
	  });
  }

</script>
<body>

<a href="#" onClick="call()">TEST CALL JSON</a>

</body>


จากตัวอย่างผมเรียก service ที่มี end point url = http://localhost:808...est_service.jsp
เมื่อได้ข้อมูลมาแล้วก็ eval เป็น JSON Object ด้วย method evalJSON() จากนั้นก็สามารถอ้างชื่อด้วย key ได้เลยครับ จากตัวอย่าง key=data ดังนั้นจึงสามารถอ้างถึงด้วย jsonObj.data


นี่ก็เป็นเพียงส่วนหนึ่งในการนำ JSON มาใช้สำหรับการรับส่งข้อมูลใน application ครับ ตอนนี้กำลังทดสอบกับปัญหาหลายๆ อย่างที่เจอมา ว่าสามารถแก้ปัญหาได้หรือเปล่า

0 Comments On This Entry

 

Search My Blog

September 2010

S M T W T F S
   12 3 4
567891011
12131415161718
19202122232425
2627282930