将 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 上试过,但没有在实际的应用程序上试过。
土耳其官方词典有某种 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 上试过,但没有在实际的应用程序上试过。