ผมเขียนถึงวิธีการสร้าง JSON message บน Java ผ่าน entry นี้มาแล้วรอบนึง หลังจากนั้นผมก็ไปค้นเจอทีหลังว่าจริงๆ แล้ว Java มันสนับสนุน JSON โดยไม่ต้องพึ่ง 3rd Party lib แล้ว เลยมาแนะนำกันครับ
สิ่งที่ผมจะสร้างคือ JSON หน้าตาแบบนี้
{ "service":"quote", "user":"plynoi", "symbols":["Nokia"], "fields":["BID","ASK","HIGH"] }
ขอเปรียบเทียบกับวิธีใช้ 3rd Party ก่อน ตัวที่ผมเลือกเพราะ google เจออันดับแรกๆ คือ json-simple ซึ่งมันก็ใช้ง่ายๆ ตรงไปตรงมา doc อ่านง่ายดีมาก จะขอยกตัวอย่างตัดมาจาก entry Java อันนั้นอีกทีนะครับ
import org.json.simple.*; private void createJSON(){ JSONObject request_msg = new JSONObject(); request_msg.put("service","quote"); request_msg.put("user","plynoi"); JSONArray itemArray = new JSONArray(); itemArray.add("Nokia"); JSONArray filterArray = new JSONArray(); filterArray.add("BID"); filterArray.add("ASK"); filterArray.add("HIGH"); request_msg.put("symbols",itemArray); request_msg.put("fields",filterArray); //JSON message "request_msg" is ready to process }
เทียบกับตัว Native ของ Java เองอย่าง JSR 353 แล้วส่วนตัวผมมองว่าที่ Java ให้มาอยู่แล้วยุ่งยากกว่าเยอะ แต่โชคดีที่ doc เขียนละเอียดดีโฮกๆ (แต่ก็อ่านยากกว่าเช่นกัน :p)
import javax.json.Json; import javax.json.JsonObject; private void createJSON(){ JsonObject request_msg = Json.createObjectBuilder() .add("service","quote") .add("user","plynoi") .add("symbols",Json.createArrayBuilder() .add("Nokia") ) .add("fields",Json.createArrayBuilder() .add("BID") .add("ASK") .add("HIGH") ) .build(); //JSON message "request_msg" is ready to process }
จะไปใช้ตัวไหนก็แล้วแต่นะครับ ส่วนตัวผมชอบ simple-json มากกว่าตรงที่มันดูตรงไปตรงมากว่านี่แหละ
gson ไหม