我目前正在构建一个应用程序,以从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>>。看起来您想要此数组/列表的第一个/第零个元素。
[...]
json.decode
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这样您的小部件就会重新构建。
setState