我有这个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
)
);
}
}
答案 0 :(得分:2)
看起来您有列表类型数据List data=[];
,该数据需要整数形式的索引,因此,如果将其作为字符串使用,则可以使用所需的方式。如果您想像这样访问它,并且可以处理JSON而不是将JSON转换
{
"stream": {
"tv": [{
"name": "Tv",
"description": "Tv",
"url": "this is the url",
"image": "imagelink",
}]
}
}
将其转换为
[
{
"stream": {
"tv": [{
"name": "Tv",
"description": "Tv",
"url": "this is the url",
"image": "imagelink",
}]
}
}
]
现在,您可以访问所需的方式。这将为您工作data[0]["stream"]["adomtv"][0]["name"]
答案 1 :(得分:1)
所以我尝试了这个:
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"
},
]}
如果是这种情况,您只需要电视的数据['stream'] [0] ['name'] 以及无线电的data ['stream'[1] ['name']。 因此,我的建议是仔细检查服务器数据流。
希望这会有所帮助。
答案 2 :(得分:0)
答案 3 :(得分:0)
您需要解码json字符串,例如:
Settings settingsFromJson(String str) {
final jsonData = json.decode(str);
return Settings.fromJson(jsonData);
}
然后您可以作为数组访问
答案 4 :(得分:0)
当前看来您的代码有错字。而不是电视。