#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) или установить точку останова, чтобы увидеть, что там. Вероятно, это не то, что мы думаем.