【问题标题】:dart JSON String convert to List String飞镖 JSON 字符串转换为列表字符串
【发布时间】:2018-11-19 14:15:13
【问题描述】:

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

[
  "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 转换为 dart 中的 List。我尝试了下面的脚本:

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

但是没用,脚本应该如何正确?

【问题讨论】:

    标签: dart flutter


    【解决方案1】:

    解析 JSON 列表的结果是 List&lt;dynamic&gt;jsonDecode 的返回类型只是 dynamic

    您可以将这样的列表转换为List&lt;String&gt; as

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

    您也可以将其用作List&lt;dynamic&gt;,然后将每个值分配给String

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

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

    【讨论】:

      【解决方案2】:

      将 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】:

        我们可以轻松地将 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 Array 的结果了。

        [dart, flutter, json]
        

        【讨论】:

        • 这很好用,并且最符合飞镖风格指南。谢谢。
        【解决方案4】:

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

        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]);
        }
        

        【讨论】:

          猜你喜欢
          • 2022-11-24
          • 1970-01-01
          • 1970-01-01
          • 2019-08-13
          • 2021-04-04
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多