簡體   English   中英

我如何將字符串轉換為列表<Map<String,String> &gt;

[英]How do i convert a String to a List<Map<String,String>>

我有一個包含多個鍵和值的列表,然后將它們映射到要顯示的 DataTable 中。

  List<Map<String, String>> listOfColumns = [
    {"Name": "John", "Number": "1", "State": " "},
    {"Name": "Brad", "Number": "2", "State": " "},
    {"Name": "Ryan", "Number": "3", "State": " "},
    {"Name": "Grant", "Number": "4", "State": " "},


  ];

現在,我想要保存數據表中的數據。 所以我簡單地使用了文件 IO 系統,我創建了一個名為 _save() 和 _read() 的異步函數,在 _save() 中我將 listOfColumns 轉換為字符串。

_read() async {
    try {
      final directory = await  getExternalStorageDirectory();
      final file = File('${directory.path}/my_file.txt');


      text = await file.readAsString();

    } catch (e) {
      print("Couldn't read file");
    }
  }

  _save() async {
    final directory = await  getExternalStorageDirectory();
    final file = File('${directory.path}/my_file.txt');
    final List<Map<String, String>> data = listOfColumns;
    await file.writeAsString(data.toString());
    print('saved');

  }

現在,當談到從文件中讀取數據時,事情就是這樣 - 我實際上如何將變量文本轉換回List<Map<String,String>> 我完全不知道如何實現這一目標。 任何幫助都受到高度贊賞。 謝謝。

您應該首先將其保存為JSON (使用jsonEncode ,然后您可以輕松地將其轉換回來:

Future<void> _save() async {
  ...
  final jsonString = jsonEncode(listOfColumns);
  await file.writeAsString(jsonString);
}

現在,您可以使用jsonDecode輕松加載數據:

Future<void> _read() async {
  ...
  final decoded = jsonDecode(await file.readAsString()) as List;
  listOfColumns = decoded.cast<Map<String, dynamic>>()
       .map((map) => map.cast<String, String>()).toList();
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM