Dart flutter FormatException:无效的unicode转义



我在我的项目中使用http包,并尝试发送GET请求和解码收到的json,但得到错误消息:

E/flutter ( 2292): [ERROR:flutter/lib/ui/ui_dart_state.cc(177)] Unhandled Exception: FormatException: Invalid unicode escape (at character 29930)
E/flutter ( 2292): ...u0438u043d)"},{"id":374,"title":"u041u0435u0437u0430u0431u0443u...

这是我的请求:

var response = await http.get(
'${ApiConstants.BASE_URL}$path$formattedParams',
headers: {
'accept': "application/json",
'Authorization': 'Bearer $token',
},
);
return json.decode(response.body);

还尝试使用json验证器验证服务器响应,在我的情况下响应是有效的json。

这是我的json响应的一部分,其中捕获错误:

{
"id": 373,
"title": "Настурция (Капуцин)"
},
{
"id": 374,
"title": "Незабудка" // error is here
},

如何解决这个问题?

从服务器以正确的UTF-8方式发送响应头

<<p>头/strong>
{
"Content-Type":"application/json;charset=UTF-8",
"Charset":"utf-8"
}

Laravel例子:

return response()->json(
$data, // response data
$code, // status code
[
'Content-Type' => 'application/json;charset=UTF-8', 
'Charset' => 'utf-8'
], 
JSON_UNESCAPED_UNICODE
);

还在android manifest的application元素下添加useCleartextTraffic属性。

<application
android:usesCleartextTraffic="true"
.....

最新更新