ใช้ Library org.json (JSON in Java) แปลง JSONArray เป็น String[] โดยวนลูปอ่านค่าแต่ละ Index แล้วเก็บใน List แล้วค่อย toArray()
ตัวอย่างโค้ด
import org.json.JSONArray;
import java.util.ArrayList;
import java.util.List;
public class JsonArrayToStringArray {
public static void main(String[] args) {
// สร้าง JSONArray
JSONArray jsonArray = new JSONArray();
jsonArray.put("INDIA");
jsonArray.put("AUSTRALIA");
jsonArray.put("SOUTH AFRICA");
jsonArray.put("ENGLAND");
jsonArray.put("NEWZEALAND");
// แปลงเป็น List
List<String> list = new ArrayList<>();
for (int i = 0; i < jsonArray.length(); i++) {
list.add(jsonArray.getString(i));
}
// แปลง List -> String[]
String[] stringArray = list.toArray(new String[0]);
// แสดงผล
System.out.println("JSONArray: " + jsonArray);
System.out.print("String Array: ");
for (String str : stringArray) {
System.out.print(str + " ");
}
}
}
ผลลัพธ์
JSONArray: ["INDIA","AUSTRALIA","SOUTH AFRICA","ENGLAND","NEWZEALAND"] String Array: INDIA AUSTRALIA SOUTH AFRICA ENGLAND NEWZEALAND
คำอธิบายขั้นตอน
jsonArray.length()- จำนวน ElementjsonArray.getString(i)- ดึงค่า String ที่ Index i (โยน JSONException ถ้าไม่ใช่ String)list.toArray(new String[0])- แปลง List เป็น Array ใหม่ (Java 11+ ใช้toArray(String[]::new))
ทางเลือก: ใช้ Stream API (Java 8+)
String[] stringArray = java.util.stream.IntStream.range(0, jsonArray.length())
.mapToObj(jsonArray::getString)
.toArray(String[]::new);
Dependency (Maven)
<dependency>
<groupId>org.json</groupId>
<artifactId>json</artifactId>
<version>20231013</version>
</dependency>