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

时间:2018-11-19 14:15:13

标签: dart flutter

我有一个API,该API如下调用json String数组:

[
  "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"
]

我打算将json转换为飞镖中的List。我尝试了以下脚本:

json.decode(response.body).cast<List<String>();

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

4 个答案:

答案 0 :(得分:3)

解析JSON列表的结果是List<dynamic>jsonDecode的返回类型仅为dynamic

您可以将此类列表转换为“列表为”

List<String> stringList = (jsonDecode(input) as List<dynamic>).cast<String>();

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

List<dynamic> rellyAStringList = jsonDecode(input);
for (String string in reallyAStringList) { ... }

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

答案 1 :(得分:1)

尝试这个。希望对您有所帮助。

import 'dart:convert';

void main() {
  String jsonResponse = '''
    ["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"]
  ''';

  dynamic jsonParsed = json.decode(jsonResponse);

//   print(jsonParsed);

  print(jsonParsed[5]);
}

答案 2 :(得分:1)

将 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));

答案 3 :(得分:0)

我们可以轻松地将JSON解析为Dart数组,而无需创建任何类。

main() {
  String arrayText = '{"tags": ["dart", "flutter", "json"]}';

  var tagsJson = jsonDecode(arrayText)['tags'];
  List<String> tags = tagsJson != null ? List.from(tagsJson) : null;

  print(tags);
}

现在您可以看到打印Dart阵列的结果。

[dart, flutter, json]