-
Flutter Converting object to an encodable object failed: Instance of 'DateTime'Flutter ์ค๋ฅ 2023. 5. 24. 22:49
๋ฌธ์ ์ํฉ
Firestore์ ๋ฐ์ดํฐ๋ฅผ ์ ๋ฐ์ดํธํ ๋ List<Map>ํ์ ์ ๋ฐ์ดํฐ๋ฅผ Json๋ฌธ์์ด๋ก ๋ณํํ์ฌ ์ ๋ฐ์ดํธํ๋ ์ํฉ์ ๋ฐ์ํ ๋ฌธ์ ์ด๋ค.
๋ฌธ์ ์์ธ
List<Map> ํ์ ์ ๋ฐ์ดํฐ๋ฅผ JSON ๋ฌธ์์ด๋ก ๋ณํํ์ฌ Firestore์ ์ ๋ฐ์ดํธํ๋ ค๋ฉด json ํจํค์ง๋ฅผ ์ฌ์ฉํ์ฌ ๋ฐ์ดํฐ๋ฅผ ์ง๋ ฌํํ๊ณ jsonEncode ํจ์๋ฅผ ์ฌ์ฉํ์ฌ JSON ๋ฌธ์์ด๋ก ๋ณํํด์ผํ๋ค.
์ ๋ฐ์ดํธ ํ๋ ค๋ ๋ฐ์ดํฐ์ "DateTime" ํ์ ์ด ์กด์ฌํ๊ฒ ์์ธ์ด๋ฉฐ, DateTime ๊ฐ์ฒด๊ฐ ์ง๋ ฌํ๋ ์ ์๋ ํํ์ด๊ธฐ ๋๋ฌธ์ด๋ค. JSON์ ์ผ๋ฐ์ ์ผ๋ก ๋ฌธ์์ด, ์ซ์, ๋ถ๋ฆฌ์ธ, ๋ฐฐ์ด, ๋งต๊ณผ ๊ฐ์ ๊ธฐ๋ณธ์ ์ธ ๋ฐ์ดํฐ ํ์ ์ ์ง์ํ๋ค. ๋ฐ๋ผ์ DateTime ๊ฐ์ฒด๋ JSON ์ง๋ ฌํ๋ฅผ ์ํด ์ถ๊ฐ ์ฒ๋ฆฌ๊ฐ ํ์ํ๋ค.
ํด๊ฒฐ๋ฐฉ๋ฒ
DateTime ๊ฐ์ฒด๋ฅผ JSON์ผ๋ก ์ง๋ ฌํํ๋ ค๋ฉด toIso8601String() ๋ฉ์๋๋ฅผ ์ฌ์ฉํ์ฌ DateTime์ ISO 8601 ํ์์ ๋ฌธ์์ด๋ก ๋ณํํด์ผ ํ๋ค. ๊ทธ๋ฆฌ๊ณ JSON ๋์ฝ๋ฉ ์์๋ ํด๋น ๋ฌธ์์ด์ ๋ค์ DateTime ๊ฐ์ฒด๋ก ๋ณํํ๋ฉด ๋๋ค.
DateTime์ ISO 8601 ํ์์ ๋ฌธ์์ด๋ก ๋ณํ
date.toIso8601String()// jsonString ๋ณํ Map<String, dynamic> updateMap = { 'date': date.toIso8601String(), }; jsonEncode(updateMap); // JSON ๋ฌธ์์ด์ ๋ณํ Map<String, dynamic> json = jsonDecode(jsonString); DateTime.parse(json['date']);'Flutter ์ค๋ฅ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ