ใช้ Jackson Library คลาส ObjectMapper เมธอด writeValueAsString() แปลง Object ใดๆ (รวม List) เป็น JSON String
Dependency (Maven)
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>2.15.2</version>
</dependency>
ตัวอย่างโค้ด
import java.util.ArrayList;
import java.util.List;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.databind.SerializationFeature;
public class ListToJsonArray {
public static void main(String[] args) {
List<String> list = new ArrayList<>();
list.add("JAVA");
list.add("PYTHON");
list.add("SCALA");
list.add(".NET");
list.add("TESTING");
ObjectMapper mapper = new ObjectMapper();
// ตั้งค่า Pretty Print ให้อ่านง่าย
mapper.enable(SerializationFeature.INDENT_OUTPUT);
try {
String json = mapper.writeValueAsString(list);
System.out.println(json);
} catch (Exception e) {
e.printStackTrace();
}
}
}
ผลลัพธ์
[ "JAVA", "PYTHON", "SCALA", ".NET", "TESTING" ]
คำอธิบาย
ObjectMapper - Main class ของ Jackson สำหรับ Serialize/DeserializewriteValueAsString(Object)- แปลง Object ใดๆ เป็น JSON StringSerializationFeature.INDENT_OUTPUT- ทำให้ JSON สวยงาม (Pretty Print)- List จะกลายเป็น JSON Array
[...]อัตโนมัติ
การใช้งานขั้นสูง
// เขียนลงไฟล์โดยตรง
mapper.writeValue(new File("languages.json"), list);
// แปลงเป็น byte[]
byte[] jsonBytes = mapper.writeValueAsBytes(list);
// Custom Serializer สำหรับ Object ซับซ้อน
สรุป
Jackson ทำให้แปลง List -> JSON Array ง่ายมากด้วย ObjectMapper.writeValueAsString() รองรับ Generic Type และ Complex Object ได้เต็มที่