JSONArray เป็นลำดับของค่า (sequence of values) รูปแบบภายนอกคือ string ครอบด้วย square brackets คั่นด้วย comma รูปแบบภายในคือ object ที่มีเมธอด get() และ opt() สำหรับเข้าถึงค่าผ่าน index และเมธอด element() สำหรับเพิ่ม/แทนที่ค่า
Array ใน Java เป็น object ที่จัดเก็บหลายค่าของ ชนิดเดียวกัน (same type) รองรับทั้ง primitive types และ object references เราสามารถแปลง JSON array เป็น array ด้วยเมธอด toArray() ของคลาส JSONArray เมธอดนี้คืนค่า Object[] ที่มีเนื้อหาจาก JSONArray
Syntax
public Object[] toArray()
ตัวอย่างการใช้งาน
import java.util.Arrays;
import net.sf.json.JSONArray;
public class ConvertJSONArrayToArrayTest {
public static void main(String[] args) {
JSONArray jsonArray = new JSONArray()
.element("Raja Ramesh")
.element("115")
.element("Tutorials Point")
.element("Hyderabad")
.element(new String[] {"Java", "Testing", "Python"});
String jsonStr = jsonArray.toString(3); // pretty print JSON
System.out.println("JSON:\n" + jsonStr);
Object[] array = jsonArray.toArray();
System.out.println("-------------------------------------------------------------------");
System.out.println("Array:\n" + Arrays.toString(array));
}
}
ผลลัพธ์ (Output)
JSON:
[
"Raja Ramesh",
"115",
"Tutorials Point",
"Hyderabad",
[
"Java",
"Testing",
"Python"
]
]
-------------------------------------------------------------------
Array:
[Raja Ramesh, 115, Tutorials Point, Hyderabad, ["Java","Testing","Python"]]
คำอธิบาย
เมธอด toArray() คืนค่า Object[] ที่แต่ละ element เป็น Java object ตาม type ใน JSON (String, Integer, String[], etc.) โปรดสังเกตว่า nested array ใน JSON จะกลายเป็น String[] ใน Java array
ข้อควรระวัง
- ผลลัพธ์เป็น Object[] ต้อง cast ให้ถูกต้องเมื่อใช้งาน
- JSON array ที่มี mixed types จะได้ Object[] ที่มี mixed types ตามไปด้วย
- nested JSON array จะกลายเป็น Object[] หรือ Array ตาม implementation
สรุป
JSONArray.toArray() เป็นวิธีง่ายๆ ในการแปลง JSON array เป็น Java array สำหรับการประมวลผลต่อไป แต่ควรระวัง type safety เนื่องจากคืนค่าเป็น Object[]