我试图从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());
});
}