I/flutter (8545): тип ‘int’ не является подтипом типа Iterable

#json #flutter #flutter-web

#json #flutter #flutter-web

Вопрос:

Сведения о классе

 class AccountInfo
{
  final int total;
  final int loan;

  AccountInfo( this.total,this.loan);
}
  

Моя функция

 Future<List<AccountInfo>> _getUsers() async {

    var url = "http://abcwebtest.com/book/accounts.php";
    var para = {'mid': "1"};

    var response = await http.post(url, body: json.encode(para));
    if(response.statusCode ==200) {
      var jsonData = json.decode(response.body);
      List<AccountInfo> accinfo_list = [];

      for (var u in jsonData) {
        AccountInfo usr_acc = AccountInfo( u["total"], u["loan"]);
        accinfo_list.add(usr_acc);

      }

  
      return  accinfo_list;
    }else{
      throw Exception('Failed to load ..........');
    }
  }
  

который будет извлекать loan и total из баланса таблицы. оба поля являются int . но я получаю сообщение об ошибке как

I / flutter (8545): тип ‘int’ не является подтипом типа ‘Iterable’ Пожалуйста, позвольте мне помочь найти решение.

Комментарии:

1. В каком поле вы получаете ошибку?

2. поле / столбец таблицы total и loan

3. можете ли вы объяснить мне, какое поле вы хотите опубликовать?

4. Просто я отправляю memberid (средний столбец) как значение = 1, чтобы получить данные общий депозит (общий столбец) и сумма кредита (столбец loan) из моей таблицы с именем accounts. МОЙ PHP-КОД, В КОТОРОМ получен mid: include(‘dbc.php ‘); $json = file_get_contents(‘php://input’); $obj = json_decode($json,true); $userid=0; $userid = $obj[‘mid’];

5. Добавьте возвращенный json к вопросу

Ответ №1:

Вы пытаетесь повторить материал, который возвращается с сервера. Это не массив:

 for (var u in jsonData) {
  AccountInfo usr_acc = AccountInfo( u["total"], u["loan"]);
  accinfo_list.add(usr_acc);
}
  

Вместо этого сделайте это:

 Map<string, dynamic> res = json.decode(response.body);
AccountInfo usr_acc = AccountInfo( res["total"], u["loan"]);
accinfo_list.add(usr_acc);
  

Комментарии:

1. Я получаю ошибку: тип ‘int’ не является подтипом типа ‘Map<String, dynamic>’ в Map<string, dynamic> res = json.decode(response.body);

2. Кажется невозможным, но может ли сервер отправлять обратно один int в качестве response.body? Вы должны debug.print(response.body) или установить точку останова, чтобы увидеть, что там. Вероятно, это не то, что мы думаем.