[Dart/Fluter] Shared Preferences 등 String 값에 임의의 맵을 저장(획득)합니다.
[Dart/Fluter] 모든 Map String
개시하다
이번에 고려
Map<DateTime, dynamic>
가 최종적으로 String으로 바뀌었다(반대로)운영 환경
DartPad 및 Android Studio 등
부호화
Map<DateTime, dynamic>
→ Map<String, dynamic>
toString()
함수를 통해 키를 StringMap<String, dynamic>
→ String
json.encode()
를 통해 함수 활용import 'dart:convert';
import 'dart:convert';
void main() {
Map<DateTime, List<dynamic>> _events = {
DateTime.now(): ['Test', 'List']
};
// エンコード汎用関数(Map<DateTime, dynamic>→Map<String, dynamic>)
Map<String, dynamic> encodeMap(Map<DateTime, dynamic> map) {
Map<String, dynamic> newMap = {};
map.forEach((key, value) {
newMap[key.toString()] = map[key];
});
return newMap;
}
// json.encodeでMapをStringへ
String testEncoded = json.encode(encodeMap(_events));
print(testEncoded.runtimeType);
print(testEncoded);
}
실행 결과String
{"2021-04-07 18:09:24.454":["Test","List"]}
디코딩
※ 인코딩된
testEncoded
값은 이번엔 입력으로 사용String
→ Map<String, dynamic>
json.decode()
를 통해 함수 활용import 'dart:convert';
Map<String, dynamic>
→ Map<DateTime, dynamic>
DateTime.parse()
함수는 키를 데이터 시간으로 변경import 'dart:convert';
void main() {
Map<DateTime, List<dynamic>> _events = {
DateTime.now(): ['Test', 'List']
};
// エンコード汎用関数(Map<DateTime, dynamic>→Map<String, dynamic>)
Map<String, dynamic> encodeMap(Map<DateTime, dynamic> map) {
Map<String, dynamic> newMap = {};
map.forEach((key, value) {
newMap[key.toString()] = map[key];
});
return newMap;
}
// json.encodeでMapをStringへ
String testEncoded = json.encode(encodeMap(_events));
// デコード汎用関数(Map<String, dynamic>→Map<DateTime, dynamic>)
Map<DateTime, dynamic> decodeMap(Map<String, dynamic> map) {
Map<DateTime, dynamic> newMap = {};
map.forEach((key, value) {
newMap[DateTime.parse(key)] = map[key];
});
return newMap;
}
Map<DateTime, List<dynamic>> newEvents = {};
// json.decodeでStringをMapへ
newEvents = Map<DateTime, List<dynamic>>.from(
// 以下は、実際にはsharedPreferences等を利用し、取得したString値を入れる
decodeMap(
json.decode(testEncoded),
),
);
print(newEvents.runtimeType);
print(newEvents);
}
실행 결과JsLinkedHashMap<DateTime, List<dynamic>>
{2021-04-07 18:31:18.014: [Test, List]}
※ 데이터 패드의 결과
Reference
이 문제에 관하여([Dart/Fluter] Shared Preferences 등 String 값에 임의의 맵을 저장(획득)합니다.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://zenn.dev/iwaku/articles/2021-04-07-iwaku텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)