flutter - 使用 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"
}
}
},
解决方案
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);
}
推荐阅读
- mysql - MySQL Workbench:ROUND() 在窗口函数中显示为灰色
- javascript - 将字符串单词与特殊字符(如 $ 或 ! 并替换它们
- tokbox - 如何在nexmo拨入会议?
- python - 将 ._replace 的命名元组字段名称作为函数的参数传递
- c# - 使用asp.net C#防止页面自动重新加载
- c# - 在 C# 的构造函数中启动异步方法
- powershell - Powershell,静默安装不起作用
- vue.js - Vue 路由器 - 访问 Vue 实例而不调用 next()
- if-statement - 如果相邻单元格有内容,则从总数中减去
- laravel - 目标组 443 使用以下代码进行健康检查失败:[502]