Flutter 创建 API 请求并使用 - 'Ä' 'Ö' 'Ü' 'ß' 接收字符串

Mar*_*ach 1 api json http dart flutter

有没有一种简单的方法可以在带有 Darts http - API(在 Flutter 中)的 API 中查询诸如“ä”、“ö”、“ü”之类的德语字母?

API 查询应将 JSON 字符串下载到 Flutterapp。不幸的是,JSON 字符串包含德语特殊字符。

String einleseURL = 'http://xxx.xxx.xxx.xxx/einlesen.json';
final ausgeleseneJsonString = await http.get(Uri.encodeFull(einleseURL));
uiUeberprueft = serializers.deserializeWith(
  RenderEbeneErste.serializer, json.decode(ausgeleseneJsonString.body));
Run Code Online (Sandbox Code Playgroud)

我能想到的唯一解决方案是将 jSON 字符串转换为 utf-8 的数值并将这个新文件保存在服务器上以进行 http 查询。然后数字列表被 Flutter 调用并在 json.decode() 发生之前用 utf.decode() 解密。

请参考: 如何在 Dart 中将字符串转换为 utf8?

有没有更简单的方法?

Mar*_*ach 6

我使用了 Dart 的 build_value 序列化器。因此,如果 json.decode() 和序列化成功,则从 json 字符串创建一个对象。

这段代码的最后一行解决了特殊字符的问题。

再次感谢!

//Objekte festlegen
RenderEbeneErste uiUeberprueft;

//jSON auslesen, prüfen & Objekt erstellen
String jsonURL = 'http://xxx.xxx.xxx.xxx/eingeleseneJSON.json';
final ausgeleseneDaten = await http.get(Uri.parse(jsonURL));
uiUeberprueft = serializers.deserializeWith(
  RenderEbeneErste.serializer, json.decode(utf8.decode(ausgeleseneDaten.bodyBytes)));
Run Code Online (Sandbox Code Playgroud)

  • 使用 http.dart 包 json.decode(utf8.decode(response.bodyBytes) 有效! (4认同)