Flutter-读取JSON文件时没有此类文件或目录错误

时间:2018-07-24 09:30:02

标签: json dart flutter

嗨,所以我试图将JSON转换为对象,但是当我读取文件时,它将引发异常:

  

FileSystemException:无法打开文件,路径='D:/AndroidStudio/my_app/assets/data/questions.json'(操作系统错误:无此类文件或目录,errno = 2)

代码如下:

String loadQuestionAsset() {
  String jsonString;
  new File('D:/AndroidStudio/my_app/assets/data/questions.json').readAsString().then((String contents) {
    jsonString = contents;
  });
  return jsonString;
}
List<Question> parseJsonForQuestion() {
  Map decoded = jsonDecode(loadQuestionAsset());
  List<Question> questions = new List<Question>();
  for (var question in decoded['questions']) {
    questions.add(new Question(question['question'], question['bool']));
  }
  return questions;
}

和JSON文件:

{
  "questions": [
    {
      "question": "Elon Musk is human",
      "bool": false
    },
    {
      "question": "Pizza is healthy",
      "bool": false
    },
    {
      "question": "Flutter is awesome",
      "bool": true
    }
  ]
}

感谢帮助:)

2 个答案:

答案 0 :(得分:0)

您需要提供的路径是:end date

现在,要阅读该文件,您还必须将其添加到assets/data/questions.json文件的资产中。

pubspec.yaml

然后,为了阅读,您应该使用rootBundle

flutter:
  assets:
    - data/questions.json

我希望它能起作用:)

答案 1 :(得分:0)

您可以:

String loadQuestionAsset() {
  String jsonString;
  File('D:/AndroidStudio/my_app/assets/data/questions.json').create().readAsString().then(String contents) {
    jsonString = contents;
  });
  return jsonString;
}