簡體   English   中英

在api調用上將對象轉換為可編碼對象失敗:_LinkedHashMap len:2

[英]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個問題。

  1. 您正在將電子郵件和密碼變量作為Map的鍵進行傳遞。 您可能應該將它們設置為字符串: {'email': _emailController.value, 'password': _passwordController.value}

  2. 您正在嘗試從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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM