在Dart中未获得所需的json响应

时间:2019-05-18 11:57:10

标签: dart flutter

我目前正在构建一个应用程序,以从json API获取数据。 我想从json代码中获取数字54。

这是json link

我尝试在此处制作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,但我却收到此错误

image

1 个答案:

答案 0 :(得分:2)

如果查看json,您会发现它完全被if __name__=='__main__': app.run(port=5000,debug=True,use_reloader=True) 包围着,这意味着它是一个json数组。 [...]会将其转换为Dart 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)"), ""); ,以便您的窗口小部件重新构建。