我在flatter目录中有一个JSON文件,而不是在assets中.

json_data.json:-

 {
    "foo" : "bar"
 }

我想在不同的文件上阅读这个JSON.

喜欢

myfile.dart:-

 import "package:mypackage/json_data.json" as data;
 import 'dart:convert';
 
  var my_data = json.decode(data);

我得到了一个错误:-

The name 'data' refers to an import prefix, so it must be followed by '.'.
Try correcting the name to refer to something other than a prefix, or renaming the prefix.

这里有什么问题?为什么我不能阅读本地进口的JSON?

推荐答案

你应该考虑装assets in flutter个.您不能简单地导入任意文件.导入是针对源代码/库的.

您需要在您的pubspec.yaml中将此文件声明为assets资源

flutter:
  assets:
    - json_data.json

然后,您可以在代码中将此资源加载为String:

import 'package:flutter/services.dart' show rootBundle;

Future<String> getJson() {
  return rootBundle.loadString('json_data.json');
}

可以用现有代码解码JSON,但它应该放在某个方法体中.调用这个getJson函数来检索JSON字符串:

var my_data = json.decode(await getJson());

或者,您可以通过将JSON文件的内容直接作为String放入代码中来进一步简化这一过程,但这可能是不可能的,这取决于您对此JSON的预期用途.

const String data = '''
{
  "foo" : "bar"
}
''';
var my_data = json.decode(data);

Dart相关问答推荐

切换到可靠的零安全后简单分配中的可空性不匹配

修复了 Flutter Dart 上 DataTable 的列和行标题

Mockito - 在空安全迁移后存根方法

结合freezed和hive

如何在Flatter dart中使用相同的元素初始化列表?

如何使用工厂构造函数扩展抽象类?

Dart 交互/访问数据库

如何循环遍历元素列表

Dart 中使用的const关键字是什么?

什么是健全的编程语言?

dart中的max/mi int/double 值是否有常数?

在 Dart 中,List.from 和 .of 以及 Map.from 和 .of 有什么区别?

如何在 Dart SDK 0.4+ 中使用 setInterval/setTimeout

如何在 Dart 中比较两个对象以查看它们是否是同一个实例?

如何在 Dart 中使用 Switch Case 语句

dart中是否可以有一个私有构造函数?

dart列表最小值/最大值

字符串枚举

在 Dart 中验证邮箱地址?

Dart 中的const和final关键字有什么区别?