我有这个 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/