首页 > 解决方案 > 使用 Dart 将字符串转换为列表/映射

问题描述

我正在尝试将 outerHTML 转换为 JSON 如何转换此字符串

<tr>
                     <td>00001</td>
                     <td>ADVANCE DATABASE MANAGEMENT SYSTEM [A]</td>
                     <td>Open</td>
                     <td>40</td>
                     <td>37</td>

                     <td><table class="table table-condensed table-bordered"><tbody><tr><td>Theory </td> <td>Sunday </td> <td>8:00 AM </td> <td>10:00 AM </td> <td>1113 </td></tr><tr><td>Lab </td> <td>Tuesday </td> <td>8:00 AM </td> <td>11:00 AM </td> <td>D0202 </td></tr></tbody></table></td>
                 </tr> 

使用 Dart/Flutter 像这样进入 List 或 Map

{
    "class id": "00001",
    "title": "ADVANCE DATABASE MANAGEMENT SYSTEM [A]",
    "status": "Open",
    "capcity": "40",
    "count": "37",
    "time": {
        "Theory": {
            "day": "Sunday",
            "start": "8:00 AM",
            "end": "10:00 AM",
            "location": "1113"
        },
        "Lab": {
            "day": "Tuesday",
            "start": "8:00 AM",
            "end": "11:00 AM",
            "location": "D0202"
        }
    }
},

标签: flutterdartdart-html

解决方案


import 'package:html/parser.dart' show parse;


main() {
  var convertedList={};
  var document = parse(
      """<table><tr>
                     <td>00001</td>
                     <td>ADVANCE DATABASE MANAGEMENT SYSTEM [A]</td>
                     <td>Open</td>
                     <td>40</td>
                     <td>37</td>

                     <td><table class="table table-condensed table-bordered"><tbody><tr><td>Theory </td> <td>Sunday </td> <td>8:00 AM </td> <td>10:00 AM </td> <td>1113 </td></tr><tr><td>Lab </td> <td>Tuesday </td> <td>8:00 AM </td> <td>11:00 AM </td> <td>D0202 </td></tr></tbody></table></td>
                 </tr> </table>""");
 var cells=document.getElementsByTagName('table')[0].getElementsByTagName('td');                
 var theoryCells=document.getElementsByTagName('table')[1].getElementsByTagName('tr')[0].getElementsByTagName('td');
 var labCells=document.getElementsByTagName('table')[1].getElementsByTagName('tr')[1].getElementsByTagName('td');

  convertedList['classId']=cells[0].innerHtml;
  convertedList['title']=cells[1].innerHtml;
   convertedList['status']=cells[2].innerHtml;
  convertedList['capcity']=cells[3].innerHtml;
  convertedList['count']=cells[4].innerHtml;

  convertedList['time']={
    'theory':{
       "day":  theoryCells[1].innerHtml,
        "start":  theoryCells[2].innerHtml,
        "end":  theoryCells[3].innerHtml,
        "location": theoryCells[4].innerHtml
    },
    'lab':{
       "day":  labCells[1].innerHtml,
        "start":  labCells[2].innerHtml,
        "end":  labCells[3].innerHtml,
        "location": labCells[4].innerHtml
    }

  };


  print(convertedList);




}

推荐阅读