บทความ
การแปลงข้อมูล JSON เป็น Dart
การแปลงข้อมูล JSON เป็น Dart สามารถทำได้โดยใช้ฟังก์ชัน json.decode() ซึ่งเป็นฟังก์ชันสำหรับแปลงข้อมูล JSON เป็น Dart object ได้ง่าย ๆ ดังนี้
import 'dart:convert';
void main() {
String jsonString = '{"name": "John Smith", "email": "john.smith@example.com"}';
Map<String, dynamic> data = json.decode(jsonString);
print(data['name']); // ผลลัพธ์: John Smith
print(data['email']); // ผลลัพธ์: john.smith@example.com
}
ตัวอย่างการแปลงข้อมูล JSON ให้อยู่ในรูปแบบของ Map ในภาษา Dart โดยใช้ฟังก์ชัน json.decode()
จาก library dart:convert
ซึ่งเป็น built-in library ในภาษา Dart
โดยสามารถอธิบายการทำงานได้ดังนี้
- กำหนดข้อมูลในรูปแบบ JSON โดยกำหนดในรูปของ String ในตัวแปร
jsonString
String jsonString = '{"name": "John Smith", "email": "john.smith@example.com"}';
- ใช้ฟังก์ชัน
json.decode()
เพื่อแปลงข้อมูล JSON ในjsonString
เป็น Map และกำหนดให้ตัวแปรdata
เก็บค่า Map ที่ได้
Map<String, dynamic> data = json.decode(jsonString);
- นำข้อมูลใน Map
data
มาแสดงผลโดยใช้ key เพื่อเข้าถึงข้อมูลใน Map
print(data['name']); // ผลลัพธ์: John Smith
print(data['email']); // ผลลัพธ์: john.smith@example.com
ในตัวอย่างข้างต้น มีการสร้างตัวแปร jsonString ที่เก็บข้อมูล JSON และใช้ฟังก์ชัน json.decode() ในการแปลงข้อมูล JSON เป็น Dart object ที่เก็บไว้ในตัวแปร data จากนั้นใช้ data['name'] และ data['email'] เพื่อเข้าถึงข้อมูลภายใน object และแสดงผลลัพธ์ออกทางหน้าจอ
หาก JSON มีโครงสร้างที่ซับซ้อนขึ้น สามารถแปลงเป็น Object ในภาษา Dart ได้โดยใช้ Class และการแปลง JSON ดังนี้:
class User {
final String name;
final int age;
User({required this.name, required this.age});
factory User.fromJson(Map<String, dynamic> json) {
return User(
name: json['name'],
age: json['age'],
);
}
}
String jsonString = '{"name": "John", "age": 30}';
Map<String, dynamic> userMap = json.decode(jsonString);
User user = User.fromJson(userMap);
โค้ดชุดนี้เป็นตัวอย่างการแปลง JSON String ให้กลายเป็น Object ในภาษา Dart ด้วย Class ชื่อ User
โดยมีขั้นตอนดังนี้:
- สร้าง Class ชื่อ
User
ที่ประกอบด้วย propertiesname
และage
ที่เป็น final และ required ซึ่งหมายความว่าต้องระบุค่าให้ครบทั้งสองค่าเมื่อสร้าง Object จาก Class นี้class User {
final String name;
final int age;
User({required this.name, required this.age});
- สร้างฟังก์ชั่นชื่อ
fromJson
ที่รับพารามิเตอร์เป็น Map ของ key-value pairs และ return Object ของ ClassUser
ด้วยการใช้ค่าใน Map ในการสร้าง Objectfactory User.fromJson(Map<String, dynamic> json) {
return User(
name: json['name'],
age: json['age'],
);
}
- สร้าง JSON String ที่ต้องการแปลงเป็น Object ในภาษา Dart
String jsonString = '{"name": "John", "age": 30}';
- ใช้
json.decode()
เพื่อแปลง JSON String เป็น Map ของ key-value pairsMap<String, dynamic> userMap = json.decode(jsonString);
- ใช้ฟังก์ชั่น
fromJson()
เพื่อแปลง Map เป็น Object ของ ClassUser
User user = User.fromJson(userMap);
ดังนั้นผลลัพธ์ที่ได้จากโค้ดดังกล่าวคือ Object user
ที่มีชื่อเป็น "John" และอายุเป็น 30
หนังสือพัฒนาตัวเอง
จุดเริ่มต้นที่ชัดเจน