บทความ
การแปลงข้อมูล 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
หนังสือพัฒนาตัวเอง
จุดเริ่มต้นที่ชัดเจน




เพิ่มลงตะกร้า