繁体   English   中英

无法解析颤振中的 JSON 数据。 颤动中的 Json 解析器错误

[英]Unable to parse the JSON data in flutter. Json Parser Error in flutter

日志:

[ERROR:flutter/lib/ui/ui_dart_state.cc(157)] Unhandled Exception: FormatException: Unexpected character (at line 2, character 1)
E/flutter (13817): <!DOCTYPE html>
E/flutter (13817): ^
E/flutter (13817): 
E/flutter (13817): #0      _ChunkedJsonParser.fail (dart:convert-patch/convert_patch.dart:1394:5)
E/flutter (13817): #1      _ChunkedJsonParser.parseNumber (dart:convert-patch/convert_patch.dart:1261:9)
E/flutter (13817): #2      _ChunkedJsonParser.parse (dart:convert-patch/convert_patch.dart:926:22)
E/flutter (13817): #3      _parseJson (dart:convert-patch/convert_patch.dart:31:10)
E/flutter (13817): #4      JsonDecoder.convert (dart:convert/json.dart:495:36)
E/flutter (13817): #5      JsonCodec.decode (dart:convert/json.dart:153:41)
E/flutter (13817): #6      _MainFetchDataState._fetchData (package:prepareyourselfforexams/QuizPage.dart:24:17)
E/flutter (13817): <asynchronous suspension>
E/flutter (13817): #7      _InkResponseState._handleTap (package:flutter/src/material/ink_well.dart:706:14)
E/flutter (13817): #8      _InkResponseState.build.<anonymous closure> (package:flutter/src/material/ink_well.dart:789:36)
E/flutter (13817): #9      GestureRecognizer.invokeCallback (package:flutter/src/gestures/recognizer.dart:182:24)
E/flutter (13817): #10     TapGestureRecognizer.handleTapUp (package:flutter/src/gestures/tap.dart:486:11)
E/flutter (13817): #11     BaseTapGestureRecognizer._checkUp (package:flutter/src/gestures/tap.dart:264:5)
E/flutter (13817): #12     BaseTapGestureRecognizer.handlePrimaryPointer (package:flutter/src/gestures/tap.dart:199:7)
E/flutter (13817): #13     PrimaryPointerGestureRecognizer.handleEvent (package:flutter/src/gestures/recognizer.dart:467:9)
E/flutter (13817): #14     PointerRouter._dispatch (package:flutter/src/gestures/pointer_router.dart:76:12)
E/flutter (13817): #15     PointerRouter._dispatchEventToRoutes.<anonymous closure> (package:flutter/src/gestures/pointer_router.dart:117:9)
E/flutter (13817): #16     _LinkedHashMapMixin.forEach (dart:collection-patch/compact_hash.dart:379:8)
E/flutter (13817): #17     PointerRouter._dispatchEventToRoutes (package:flutter/src/gestures/pointer_router.dart:115:18)
E/flutter (13817): #18     PointerRouter.route (package:flutter/src/gestures/pointer_router.dart:101:7)
E/flutter (13817): #19     GestureBinding.handleEvent (package:flutter/src/gestures/binding.dart:218:19)
E/flutter (13817): #20     GestureBinding.dispatchEvent (package:flutter/src/gestures/binding.dart:198:22)
E/flutter (13817): #21     GestureBinding._handlePointerEvent (package:flutter/src/gestures/binding.dart:156:7)
E/flutter (13817): #22     GestureBinding._flushPointerEventQueue (package:flutter/src/gestures/binding.dart:102:7)
E/flutter (13817): #23     GestureBinding._handlePointerDataPacket (package:flutter/src/gestures/binding.dart:86:7)
E/flutter (13817): #24     _rootRunUnary (dart:async/zone.dart:1138:13)
E/flutter (13817): #25     _CustomZone.runUnary (dart:async/zone.dart:1031:19)
E/flutter (13817): #26     _CustomZone.runUnaryGuarded (dart:async/zone.dart:933:7)
E/flutter (13817): #27     _invoke1 (dart:ui/hooks.dart:273:10)
E/flutter (13817): #28     _dispatchPointerDataPacket (dart:ui/hooks.dart:182:5)
E/flutter (13817): 

这是我的文件代码:

class MainFetchData extends StatefulWidget {
  @override
  _MainFetchDataState createState() => _MainFetchDataState();
}
class _MainFetchDataState extends State<MainFetchData> {

List list = List();
var isLoading = false;
_fetchData() async {
  setState(() {
    isLoading = true;
  });
  final response =
  await http.get("https://prepare-your-exams.firebaseio.com/");
  if (response.statusCode == 200) {
    var data = response.body;
    print(response.statusCode);
    data = json.decode(data).toString();
    list =  data as List;
    setState(() {
      isLoading = false;
    });
  } else {
    print("Data is not loaded");
    print(response.statusCode);
  }
}

  @override
  Widget build(BuildContext context) {
    return Scaffold(
        appBar: AppBar(
          title: Text("Fetch Data JSON"),
        ),
        bottomNavigationBar: Padding(
          padding: const EdgeInsets.all(8.0),
          child: RaisedButton(
            child: new Text("Fetch Data"),
            onPressed: _fetchData,
          ),
        ),
        body: isLoading
            ? Center(
          child: CircularProgressIndicator(),
        )
            : ListView.builder(
            itemCount: list.length,
            itemBuilder: (BuildContext context, int index) {
              return
                //QuizPage( mydata: list,);
                ListTile(
                contentPadding: EdgeInsets.all(10.0),
                title:  Text(list[index][1]),
                trailing: Text(list[index][2]),

              );
            }));

  }}

Firebase 的 Json 文件预览:在此处输入图像描述

您正在从响应中获取字符串。 然后将其转换为列表。 为什么您在该列表中再次使用.toString() 不需要那个。 只需删除它并运行。 它将解决您的问题。

data = json.decode(data);
list = data as List;

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM