在Dart中未获得所需的json响应
问题内容:
我目前正在构建一个应用程序,以从json API获取数据。我想从json代码中获取数字54。
这是json
链接
我试图在这里制作json api的模型类
class TeerModel{
String text;
TeerModel(this.text);
TeerModel.fromJson(Map<String, dynamic>parsedJson){
text = parsedJson['text'];
}
}
但是我无法得到结果,所以我将其删除
这是代码
import 'package:flutter/material.dart';
import 'package:http/http.dart' show get;
import 'models/teer_model.dart';
import 'dart:convert';
class Appss extends StatefulWidget {
@override
_AppssState createState() => _AppssState();
}
class _AppssState extends State<Appss> {
String result = "1S";
void fetchData ()async{
var response1 = await get("http://motyar.info/webscrapemaster/api/?url=http://teertoday.com/&xpath=/html/body/div[5]/div/table/tbody/tr[3]/td[1]#vws");
var teerModel = json.decode(response1.body);
var line = teerModel["text"].replaceAll(new RegExp(r"(\s\n)"), "");
print(line);
}
@override
Widget build(BuildContext context) {
return MaterialApp(
home: Scaffold(
appBar: AppBar(title: Text("Teer result"),),
floatingActionButton: FloatingActionButton(
onPressed: fetchData,
),
body: Center(
child: Text("The result is: $result"),
),
),
);
}
}
我只想从“文本”中获取数字54,所以我使用正则表达式
我预计输出将是54,但我收到此错误
问题答案:
如果查看json,您会发现它完全被包围[...]
,意味着它是一个json数组。json.decode
会将其转换为Dart
List<Map<String, dynamic>>
。看起来您想要此数组/列表的第一个/第零个元素。
更改:
var line = teerModel["text"].replaceAll(new RegExp(r"(\s\n)"), "");
至
var line = teerModel[0]["text"].replaceAll(new RegExp(r"(\s\n)"), "");
不要忘了打电话,setState
这样您的小部件就会重新构建。