ผมเขียนถึงวิธีการสร้าง 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 มากกว่าตรงที่มันดูตรงไปตรงมากว่านี่แหละ