首页 文章

Flutter:从JSON文件访问数据并将其转换为Object

提问于
浏览
1

我跟随存储在Assets / JSON / example.json中的Json

[
 {"optiontext" : "One", "optionvalue" : "One"},
 {"optiontext" : "Two", "optionvalue" : "Two"},
 {"optiontext" : "Three", "optionvalue" : "Three"}
]

我想从这个文件中读取JSON并将其转换为MyObject . 必须在Flutter App中使用它

1 回答

  • 1

    以下是您的案例的示例代码段 . 基本上,我们可以使用dartson包进行转换 .

    import 'package:dartson/dartson.dart';
    
    void main(List<String> args) {
      String jsonString = '[{"optiontext" : "One", "optionvalue" : "One"},{"optiontext" : "Two", "optionvalue" : "Two"},{"optiontext" : "Three", "optionvalue" : "Three"}]';
    
      var dson = new Dartson.JSON();
      List<MyObject> result = dson.decode(jsonString, new MyObject(), true);
      print(result[1].optionValue);
    }
    
    @Entity()
    class MyObject {
      @Property(name:"optiontext")
      String optionText;
      @Property(name:"optionvalue")
      String optionValue;
    }
    

    由于某些问题你不能在fartter中使用dartson,下面的代码片段可以在 dart:convert 的帮助下使用

    import 'dart:convert';
    
    void main(List<String> args) {
      String jsonString = '[{"optiontext" : "One", "optionvalue" : "Value"},{"optiontext" : "Two", "optionvalue" : "Two"},{"optiontext" : "Three", "optionvalue" : "Three"}]';
      List<Map> parsedJson = JSON.decode(jsonString);
      List<MyObject> result = parsedJson.map((item) => new MyObject.fromJson(item)).toList();
      print(result[0].optionText);
      print(result[0].optionValue);
    }
    
    class MyObject {
      String optionText;
      String optionValue;
    
      MyObject.fromJson(Map jsonMap)
          : optionText = jsonMap['optiontext'],
            optionValue = jsonMap['optionvalue'];
    }
    

相关问题