错误:颤振/运行时/dart_vm_initializer.cc(41) 未处理的异常:类型"字符串"不是 json 文件的"索引"类型"int"的子类型,颤振



我试图从JSON文件

获得两个int这是api响应

[
{
"New_V": 30,
"Old_V": 29
}
]

当我使用jsonDecode来获得这两个int时,我在标记代码中得到一个错误

我一直得到

未处理异常:类型'String'不是类型'int'的子类型"指数">

代码行 上的

newV = vData['New_V'].toInt();

这是我的代码

isTheirUpdate() async {
var vData;
try {
Response response =
await get(Uri.parse('https://0000000000000/check_v.json'));
if (response.statusCode == 200) {
vData = jsonDecode(response.body);
print(vData);
int newV;
int oldV;
setState(() {
newV = vData['New_V'].toInt(); /////////// I get error here "type 'String' is not a subtype of type 'int' of 'index'"
oldV = vData['Old_V'].toInt();
});
if (newV == KCheckAppVersion) {
isTheirInternet;
} else if (oldV == KCheckAppVersion) {
showDialog()
} else {
showDialog()
}
}
} on SocketException catch (_) {}
}

有些东西我想念,但我不知道是什么有人能解释一下这行代码的原因和修复吗?

感谢

您的变量是string,您不能在string上使用toInt(),请尝试这种方式解析为int:

newV = int.parse(vData[0]['New_V'].toString());
oldV = int.parse(vData[0]['Old_V'].toString());

同时你得到的是map的列表而不是一个单独的map所以vData是map的列表你需要像这样使用它:

if((vData as List).isNotEmpty){
setState(() {
newV = int.parse(vData[0]['New_V'].toString());
oldV = int.parse(vData[0]['Old_V'].toString());
});
}

相关内容

最新更新