将 HTML 转换为 JSON

Dart Convert HTML to JSON

土耳其官方词典有某种 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
^
)

我该如何解决这个问题?

它 returns 一个 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 上试过,但没有在实际的应用程序上试过。