[英]Converting object to an encodable object failed: _linkedhashmap len:1 Flutter
[英]Converting object to an encodable object failed on api call: _LinkedHashMap len:2
好的,所以我對為什么收到此錯誤感到困惑。 我正在嘗試向api端點發出發布請求。 這是我將電子郵件和密碼數據傳遞給另一個進行api調用的函數的函數
import 'dart:async';
import 'dart:convert';
submit() async {
var res = await LoginAPI().loginData(
{email: _emailController.value, password: _passwordController.value});
var body = json.decode(res);
print(body);
}
這是我進行api調用的函數。
import 'package:http/http.dart' as http;
loginData(data) async {
var fullUrl = _url + "v1/users/login";
return await http.post(fullUrl, body: jsonEncode(data), headers: _setHeaders());
}
_setHeaders() => {
'Content-Type': 'application/json',
'Accept': 'application/json'
};
當我嘗試在郵遞員到達終點時,我得到以下數據
{
"success": {
"user": {
"id": 1,
"first_name": "Senny",
"last_name": "Demo",
"bio": "I am a new bio",
"email": "senny_demo@gmail.com",
"phone_number": "081697565335",
"default_line": "081697565335",
"balance": 0,
"lines": [
{
"id": 1,
"user_id": 1,
"J_Number": "081697565335",
"account_code": "081697565335",
"pin": "1234",
"type": "j_number",
"created_at": "2019-11-25 13:21:27",
"updated_at": "2019-11-25 13:21:27"
}
],
"username": "senny_demo",
"email_verified": true
}
}
但是在我的flutter應用程序上,我收到以下錯誤。 將對象轉換為可編碼對象失敗:_LinkedHashMap len:2任何幫助將不勝感激
我發現您的代碼有2個問題。
您正在將電子郵件和密碼變量作為Map的鍵進行傳遞。 您可能應該將它們設置為字符串: {'email': _emailController.value, 'password': _passwordController.value}
您正在嘗試從json解碼整個Response對象。 我想您想對它的主體進行解碼: var body = json.decode(res.body);
您正在嘗試對Http Response執行jsonDecode。 嘗試解碼Response主體,而不是解碼res.body
。 完整代碼如下
import 'dart:async';
import 'dart:convert';
submit() async {
var res = await LoginAPI().loginData(
{email: _emailController.value, password: _passwordController.value});
var body = json.decode(res.body);
print(body);
}
其次,嘗試按以下字符串格式將“鍵”放入地圖中:
{'email': _emailController.value, 'password': _passwordController.value}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.