Dart 将 HTML 转换为 JSON
Posted
技术标签:
【中文标题】Dart 将 HTML 转换为 JSON【英文标题】:Dart Convert HTML to JSON 【发布时间】:2022-01-17 20:03:00 【问题描述】:土耳其官方词典有某种 json 请求系统,但它给出的响应是 html,而不是 JSON。
例子:
https://sozluk.gov.tr/gts?ara=kalem
我正在尝试将此 HTML 转换为 JSON,但无法成功。当我在 Flutter 上使用 html 插件时,它每次都会给我某种#document。
var sozlukurl = await http.Client()
.get(Uri.parse('https://sozluk.gov.tr/gts?ara=$ceviri'));
print(sozlukurl);
var sozlukapibody = parse(sozlukurl.body);
print(sozlukapibody);
var decoded = json.decode(sozlukapibody.toString());
var sozlukbilgi = jsonDecode(utf8.decode(decoded.bodyBytes)) as Map;
var sozlukanlam = sozlukbilgi['anlamlarListe'][0]['anlam'];
print(sozlukanlam);
sozlukurl 的输出:
I/flutter ( 5350): Instance of 'Response'
sozlukapibody 的输出:
I/flutter ( 5350): #document
最终错误:
FormatException (FormatException: Unexpected character (at character 1)
#document
^
)
我该如何解决这个问题?
【问题讨论】:
所以你得到了 HTML 形式的响应? 【参考方案1】:它返回一个带有封装它的数组的 json。对于您的特定示例,jsonDecode 应该可以正常工作,只需使用数组的索引 0 即可访问 json。
var res = await http.Client()
.get(Uri.parse('https://sozluk.gov.tr/gts?ara=kalem'));
var body = res.body;
var decoded = jsonDecode(body);
var json = decoded[0];
var sozlukanlam = json["anlamlarListe"][0]["anlam"];
print(sozlukanlam);
我在 DartPad 上尝试过,但没有在实际应用上尝试过。
【讨论】:
它就像 DartPad 中的魅力一样。在实际的应用程序中,我遇到了一些不同的错误。 “错误代码”编辑:已修复,这只是错字。以上是关于Dart 将 HTML 转换为 JSON的主要内容,如果未能解决你的问题,请参考以下文章
无法将 yyyyMMddHHmmss 格式的字符串日期转换为 DateTime dart
如何将使用graphQL的api响应转换为flutter中的Plain Old Dart Object?
Dart:尽管强制转换,但无法将 List<dynamic> 转换为 List<Map<String, dynamic>>