บ่อยครั้งที่ได้รับข้อมูลเป็น Array ของ JSON Strings ต้อง Parse แต่ละ Element ให้กลายเป็น Object จริง เพื่อเข้าถึง Property ได้ง่าย
ตัวอย่างโค้ด
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>Strings to Objects</title>
<style>
body { font-family: "Segoe UI", Tahoma, Geneva, Verdana, sans-serif; }
.result, .sample { font-size: 18px; font-weight: 500; color: rebeccapurple; }
.result { color: red; }
</style>
</head>
<body>
<h1>แปลง Array of Strings เป็น Array of Objects</h1>
<div class="sample"></div>
<br />
<div class="result"></div>
<button class="Btn">คลิกที่นี่</button>
<h3>คลิกปุ่มด้านบนเพื่อแปลง Array Strings ข้างต้นเป็น Objects</h3>
<script>
const BtnEle = document.querySelector(".Btn");
const resEle = document.querySelector(".result");
const sampleEle = document.querySelector(".sample");
let arr = [
'{ "name":"Rohan", "age":12 }',
'{ "name":"Mohit", "age":22 }',
'{ "name":"Shawn", "age":18 }',
'{ "name":"Michael", "age":19 }'
];
sampleEle.innerHTML = arr.join("
");
BtnEle.addEventListener("click", () => {
// Parse แต่ละ Element
arr = arr.map(item => JSON.parse(item));
arr.forEach(item => {
resEle.innerHTML += `Name = ${item.name} : Age = ${item.age}<br>`;
});
});
</script>
</body>
</html>
วิธีการแปลงและ Error Handling
const jsonStrings = [
'{ "name": "John", "age": 30 }',
'invalid json',
'{ "name": "Jane", "age": 25 }'
];
// 1. Map + Try Catch (Safe)
const objects = jsonStrings.map(str => {
try {
return JSON.parse(str);
} catch (e) {
console.error("Parse error:", str);
return null; // หรือ skip
}
}).filter(Boolean); // กรอง null ออก
// 2. Map + JSON.parse (Simple - Crash ถ้า Invalid)
const objects2 = jsonStrings.map(JSON.parse);
// 3. Reduce (Single Pass)
const objects3 = jsonStrings.reduce((acc, str) => {
try {
acc.push(JSON.parse(str));
} catch (e) {
// Handle error
}
return acc;
}, []);
⚠️ ข้อควรระวัง
JSON.parseจะ Throw Error ถ้า String ไม่ใช่ JSON Valid- Single Quotes ไม่ถูกต้องใน JSON ต้องเป็น Double Quotes
- Trailing Comma ไม่อนุญาตใน JSON
- Functions, undefined, Symbol ไม่รองรับใน JSON
ผลลัพธ์
Name = Rohan : Age = 12, Name = Mohit : Age = 22, Name = Shawn : Age = 18, Name = Michael : Age = 19