我从response.body中将JSON作为字符串发送,但是获得“未处理异常:类型' string‘不是类型为'Map’在类型cast‘中的子类型”的错误。--如果我手动编写JSON,代码就能工作。但是,如果从参数中获得JSON作为字符串,则会得到强制转换错误。
我试图将返回值转换为List,但我猜extractedData应该会改变,就放在这里。"s“是JSON字符串。
getVacDates函数仅用于通过映射从类似于[10/14/21, 10/15/21, 10/16/21...]的JSON中获取日期或总值。
static List<String> getVacDates(String s) {
final newList = jsonEncode(s);
final extractedData = jsonDecode(newList) as Map<String, dynamic>;
final china= extractedData['timeline'].map((e) => e["date"]);
List<String> StringList = china.cast<String>();
print(StringList);
return StringList;
}有关信息,JSON是:
{"country":"USA","timeline":
[{"total":409571117,"daily":757824,"totalPerHundred":121,"dailyPerMillion":2253,"date":"10/14/21"},
{"total":410559043,"daily":743873,"totalPerHundred":122,"dailyPerMillion":2212,"date":"10/15/21"},
{"total":411028977,"daily":737439,"totalPerHundred":122,"dailyPerMillion":2193,"date":"10/16/21"},
{"total":411287235,"daily":731383,"totalPerHundred":122,"dailyPerMillion":2175,"date":"10/17/21"}]}简化程序:
responseVac = await http.get('https://disease.sh/v3/covid-19/vaccine/coverage/countries/usa?lastdays=3');
var data = MyFile.myFunction(xxx, yyy, responseVac.body);在MyFile中:
static ChartsData myFunction(String xxx, bool yyy, String responseVac) {
List<String> getVacDates(String s) =>
[for (final data in jsonDecode(s)['timeline']) data['date'] as String];
print(getVacDates(responseVac));发布于 2021-11-13 21:47:48
不完全确定你想得到什么,但是它是这样的吗?
import 'dart:convert';
void main() {
print(getVacDates(jsonString)); // [10/14/21, 10/15/21, 10/16/21, 10/17/21]
}
List<String> getVacDates(String s) => [
for (final timeline in jsonDecode(s)['timeline'])
timeline['date'] as String
];
const jsonString = '''{
"country": "USA",
"timeline": [
{
"total": 409571117,
"daily": 757824,
"totalPerHundred": 121,
"dailyPerMillion": 2253,
"date": "10/14/21"
},
{
"total": 410559043,
"daily": 743873,
"totalPerHundred": 122,
"dailyPerMillion": 2212,
"date": "10/15/21"
},
{
"total": 411028977,
"daily": 737439,
"totalPerHundred": 122,
"dailyPerMillion": 2193,
"date": "10/16/21"
},
{
"total": 411287235,
"daily": 731383,
"totalPerHundred": 122,
"dailyPerMillion": 2175,
"date": "10/17/21"
}
]
}''';https://stackoverflow.com/questions/69958335
复制相似问题