Flutter json 1处的意外字符
Posted
技术标签:
【中文标题】Flutter json 1处的意外字符【英文标题】:Flutter json Unexpected character at 1 【发布时间】:2021-08-29 13:28:20 【问题描述】:我正在处理一个项目,在尝试使用 json.decode
方法解码一些 JSON 数据时遇到此错误。
错误
E/flutter (26652): [ERROR:flutter/lib/ui/ui_dart_state.cc(186)] 未处理异常:FormatException:意外字符(在字符 1) E/flutter (26652): 'StreamedResponse' 的实例 E/颤振(26652):^ E/颤振(26652): E/flutter (26652): #0 _ChunkedJsonParser.fail (dart:convert-patch/convert_patch.dart:1404:5) E/flutter (26652): #1 _ChunkedJsonParser.parseNumber (dart:convert-patch/convert_patch.dart:1271:9) E/flutter (26652): #2 _ChunkedJsonParser.parse (dart:convert-patch/convert_patch.dart:936:22) E/flutter (26652): #3 _parseJson (dart:convert-patch/convert_patch.dart:40:10) E/flutter (26652): #4 JsonDecoder.convert (dart:convert/json.dart:506:36) E/flutter (26652): #5 JsonCodec.decode (dart:convert/json.dart:157:41) E/颤动(26652):#6
userModel.dart
import 'dart:convert';
import 'package:shared_preferences/shared_preferences.dart';
class UserModel
String id;
String name;
String email;
UserModel(this.id, this.name, this.email);
static UserModel sessionUser;
factory UserModel.fromjson(Map<String, dynamic> i) =>
UserModel(
id: i['id'],
name: i['name'],
email: i['email']
);
Map<String, dynamic> toMap() =>
'id': id,
'name': name,
'email': email
;
static void saveUser(UserModel user) async
SharedPreferences pref = await SharedPreferences.getInstance();
var data = jsonEncode(user.toMap());
pref.setString('user', data);
// ignore: deprecated_member_use
pref.commit();
static void getUser() async
SharedPreferences pref = await SharedPreferences.getInstance();
String data = pref.getString('user');
if (data != null)
var decode = json.decode(data); // <------ error here
if (data.isNotEmpty)
var user = UserModel.fromjson(decode);
sessionUser = user;
else
sessionUser = null;
static void logOut() async
SharedPreferences p = await SharedPreferences.getInstance();
p.setString('user', "");
sessionUser = null;
// ignore: deprecated_member_use
p.commit();
如您所见,错误发生在 getUser
方法上,同时使用 SharedPreferences
解码保存的变量
HomePage.dart
import 'package:flutter/material.dart';
import 'package:mostapha_app/ka/screens/sign_in/components/sign_form.dart';
import 'package:mostapha_app/models/userModel/userModel.dart';
import 'package:mostapha_app/screens/Home/home.dart';
import 'package:mostapha_app/screens/Home/welcom.dart';
import 'package:mostapha_app/screens/autntification/UserRegister.dart';
import 'package:mostapha_app/screens/autntification/login.dart';
import 'package:mostapha_app/screens/autntification/conducteurRegister.dart';
class HomePage extends StatefulWidget
@override
State<StatefulWidget> createState() => _HomePageState();
class _HomePageState extends State<HomePage>
bool visibel = true, login = false;
isconnected() async
// ignore: await_only_futures
await UserModel.getUser();
if (UserModel.sessionUser == null)
setState(()
login = false;
);
else
setState(()
login = true;
);
tooggle()
setState(()
visibel = !visibel;
);
isLogin()
setState(()
login = !login;
);
@override
void initState()
super.initState();
isconnected();
@override
Widget build(BuildContext context)
return login
? Home(login: isLogin)
: visibel
?
LogIn(tooggle, isLogin)
: UserRegester(tooggle, isLogin);
如果有人知道为什么会发生此错误,我将不胜感激。
【问题讨论】:
【参考方案1】:我第一次开始 Flutter 编程时遇到了同样的问题。
我认为您的代码可能是正确的。我不确定你的代码,它似乎是正确的。但我绝对确定您的数据一定不正确。我有同样的错误,我终于找到了问题的根源。您必须检查数据来源。您可能在用户保存部分出错?
【讨论】:
以上是关于Flutter json 1处的意外字符的主要内容,如果未能解决你的问题,请参考以下文章
Flutter FormatException:意外字符(在字符 1 处)
在 BigQuery 中读取时,未定义行 XXXX、列 xx-xx 处的 JSON 输入意外结束
SyntaxError:JSON.parse 处的 JSON 输入意外结束 [重复]