我试图解码一个json文件,在我的请求后从服务器回来,但是当我想解码json时,它显示一个错误以下是我的解码代码:
var loginJson = jsonDecode(utf8.decode(response.bodyBytes));
var model = idResponseModel(
loginJson['id'],
loginJson["fname"],
loginJson["lname"],
loginJson["nationalCode"],
loginJson["gender"],
loginJson["bornDate"],
loginJson["phoneNumber"],
loginJson["cardNumber"],
loginJson["enabled"]);
print(model.id);
和控制台显示发生在loginJson['id']
idFrom server是这样的:
"id": "5de0a41e-9a6f-4b55-9567-024cd0fdbfc5"
对直接使用[bodyBytes]有点惊讶试试使用Response getter→body
String get body => _encodingForHeaders(headers).decode(bodyBytes);
在你的例子中应该是这样的:
var loginJson = jsonDecode(response.body);
var model = idResponseModel(
loginJson['id'],
loginJson["fname"],
loginJson["lname"],
loginJson["nationalCode"],
loginJson["gender"],
loginJson["bornDate"],
loginJson["phoneNumber"],
loginJson["cardNumber"],
loginJson["enabled"]);
print(model.id);
我现在没有办法检查,但如果它工作,请告诉我
这个错误意味着loginJson.[]
期望一个int,而不是一个String。因此,loginJson
实际上可能是一个List,而不是像您期望的那样是Map。您可以通过打印loginJson.runtimeType
来检查。
除非您发布整个JSON,否则这个问题是不充分的,并且不可复制…因为在尝试从错误的一个节点获取数据时(id
是一个字符串索引,但它遇到了一个意外的数字索引),您可能认为已经有了响应。这就是为什么你的样本数据和错误信息在一起没有提供任何意义。