Flutter中如何在ListView展示本地嵌套JSON文件?
解决Flutter本地嵌套JSON在ListView展示的问题
你的核心问题在于JSON结构的解析逻辑错误:本地JSON是数组包裹的对象集合,数组内每个元素才是包含jp键的对象,而你直接尝试从数组对象中取jp键,导致无法正确解析数据。以下是具体修正步骤:
1. 修正JSON解析逻辑
修改event_page.dart中的readJson方法,正确遍历数组并提取每个元素中的jp数据:
Future<void> readJson() async{ final String response = await rootBundle.loadString("assets/array.json"); // 明确指定解析结果为List类型 final List<dynamic> informationData = json.decode(response); setState(() { // 遍历数组,每个元素取出jp对应的Map,再转为JP对象 testJson = informationData .map((item) => JP.fromJson(item['jp'] as Map<String, dynamic>)) .toList(); }); }
2. 确保JSON文件格式正确
检查你的array.json文件,确保引号是标准双引号(避免转义错误),正确格式如下:
[ { "jp": { "name": "jp", "password": "pawwordTest", "maxtun": 0, "email": "jp@france.fr", "date": { "build": "test1", "first_cnx": "test2" } } } ]
3. 验证资源配置
确保在pubspec.yaml中正确声明了assets资源,否则无法读取本地文件:
flutter: assets: - assets/array.json
完成以上修改后,点击"Load Informations"按钮,就能在ListView中正确展示本地JSON的嵌套数据了。
内容的提问来源于stack exchange,提问作者Mehdi
相关产品推荐
相关产品推荐

