dart JSON字符串转换为列表字符串

Den*_*dan 1 dart flutter

我有一个调用json字符串数组的API,如下所示:

[
  "006.01.01",
  "006.01.01 1090",
  "006.01.01 1090 1090.950",
  "006.01.01 1090 1090.950 052",
  "006.01.01 1090 1090.950 052 A",
  "006.01.01 1090 1090.950 052 A 521219",
  "006.01.01 1090 1090.950 052 A 521219",
  "006.01.01 1090 1090.950 052 A 521219",
  "006.01.01 1090 1090.950 052 A 521219",
  "006.01.01 1090 1090.950 052 A 521219",
  "006.01.01 1090 1090.950 052 B",
  "006.01.01 1090 1090.950 052 B 521211",
  "006.01.01 1090 1090.950 052 B 521211",
  "006.01.01 1090 1090.994",
  "006.01.01 1090 1090.994 001",
  "006.01.01 1090 1090.994 001 A",
  "006.01.01 1090 1090.994 001 A 511111",
  "006.01.01 1090 1090.994 001 A 511111",
  "006.01.01 1090 1090.994 001 A 511111",
  "006.01.01 1090 1090.994 001 A 511111"
]
Run Code Online (Sandbox Code Playgroud)

我打算将json转换为飞镖列表。我尝试了以下脚本:

json.decode(response.body).cast<List<String>();
Run Code Online (Sandbox Code Playgroud)

但是它不起作用,脚本应该如何正确?

vis*_*hwa 14

将 Json 数据转换为列表

List<String> data = [
   "006.01.01",
   "006.01.01 1090",
   "006.01.01 1090 1090.950",
   "006.01.01 1090 1090.950 052",
   "006.01.01 1090 1090.950 052 A",
   "006.01.01 1090 1090.950 052 A 521219",
   "006.01.01 1090 1090.950 052 A 521219",
   "006.01.01 1090 1090.950 052 A 521219",
   "006.01.01 1090 1090.950 052 A 521219",
   "006.01.01 1090 1090.950 052 A 521219",
   "006.01.01 1090 1090.950 052 B",
   "006.01.01 1090 1090.950 052 B 521211",
   "006.01.01 1090 1090.950 052 B 521211",
   "006.01.01 1090 1090.994",
   "006.01.01 1090 1090.994 001",
   "006.01.01 1090 1090.994 001 A",
   "006.01.01 1090 1090.994 001 A 511111",
   "006.01.01 1090 1090.994 001 A 511111",
   "006.01.01 1090 1090.994 001 A 511111",
   "006.01.01 1090 1090.994 001 A 511111"
];

//your json string
String jsonString = json.encode(data);

//convert json string to list
List<String> newData = List<String>.from(json.decode(jsonString));
Run Code Online (Sandbox Code Playgroud)


lrn*_*lrn 6

解析JSON列表的结果是List<dynamic>。的返回类型jsonDecodedynamic

您可以将这样的列表转换List<String>

List<String> stringList = (jsonDecode(input) as List<dynamic>).cast<String>();
Run Code Online (Sandbox Code Playgroud)

您也可以将其用作List<dynamic>,然后将每个值分配给String

List<dynamic> rellyAStringList = jsonDecode(input);
for (String string in reallyAStringList) { ... }
Run Code Online (Sandbox Code Playgroud)

效果大致相同-从列表中取出每个元素时,将检查每个元素是否为字符串。