flutter - 如何在 flutter 中从 JSON 文件中获取数据

标签 flutter dart

我有这个 JSON 文件,我想获取“名称”字段,但我对 JSON 文件没有更好的理解,任何人都可以解释我如何读取此 JOSN 文件格式以及如何访问“名称”字段进行打印。我尝试了多个代码,但没有成功。

{
    "stream": {
        "tv": [{
            "name": "Tv",
            "description": "Tv",
            "url": "this is the url",
            "image": "imagelink",

        }]
    }
}

这是代码
import 'dart:convert';
import 'package:flutter/material.dart';
import 'package:http/http.dart' as http;

void main() => runApp(HomePage());

class HomePage extends StatefulWidget {
  @override
  _HomePageState createState() => _HomePageState();
}
class _HomePageState extends State<HomePage> {
  List data=[];
  @override
  void initState() {
    fetchData();
    super.initState();
  }

  void fetchData() async {
    final response =
    await http.get('Link here');
    if (response.statusCode == 200) {
      setState(() {
        data = json.decode(response.body);
      });
    }
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(),
      body: Center(
        child: Text(data[0]["stream"]["adomtv"][0]["name"]),// how can I access given Json fields here 
      )
    );
  }
}

最佳答案

所以我试过这个:

import 'dart:convert';

main() {
  String jsonS = """{
    "stream": {
        "tv": [{
            "name": "Tv",
            "description": "Tv",
            "url": "this is the url",
            "image": "imagelink"

        }]
    }
}""";
  var myMap = json.decode(jsonS);
  var myName = myMap['stream']['tv'][0]['name'];
  print('${myName}');
}

这按预期工作并产生电视的名称。

但是,我认为您的 json 中有一个错字。我的猜测是你得到了一个对象流,其中一个是电视。
所以我希望你的 json 看起来更像:
{ 
        "stream": { [
            {
                "name": "Tv",
                "description": "Tv",
                "url": "this is the url",
                "image": "imagelink"

            },
            {
                "name": "Radio",
                "description": "Radio",
                "url": "this is the url",
                "image": "imagelink"

            },

]}

如果是这种情况,您只需要电视的 data['stream'][0]['name']
和 data['stream'[1]['name'] 用于 radio 。
所以我的建议是仔细检查服务器数据流。

希望这可以帮助。

关于flutter - 如何在 flutter 中从 JSON 文件中获取数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58068027/

相关文章:

flutter - 在没有上下文的情况下导航

flutter - 中断异常 '_InternalLinkedHashMap<dynamic, dynamic>' 不是类型 'Map<String, String>' 的子类型

android - 在模拟器相机应用程序中看不到虚拟场景图像

flutter - 如何从它自己的 onTap 中禁用 ListTile?

android - Flutter - 带有芯片的输入文本字段

flutter - 为什么我的函数不接受Colors类型的参数名称?

dart - 为什么将dart2js的输出复制并粘贴到控制台不起作用?

ios - pod 安装 : CocoaPods could not find compatible versions for pod "Firebase/CoreOnly" 上的 Flutter 错误

dart - 删除列表中的尾随空格

flutter - 如何修改 Dart/Dart 包?