Firebase实时数据库登录遇Newtonsoft.Json.JsonReaderException错误求助
错误信息
Newtonsoft.Json.JsonReaderException: 'Unexpected character encountered while parsing value: <. Path '', line 0, position 0.'
出错代码
FirebaseResponse response = client.Get("users/" + txtUser.Text); Utilizador resUser = response.ResultAs<Utilizador>(); // 该行报错
问题原因
这个错误的核心是:请求Firebase接口返回的内容不是合法的JSON数据,而是以<开头的HTML格式错误页面(比如404资源不存在、403权限不足、500服务器错误等),导致Newtonsoft.Json无法正常解析。
解决方案
检查请求路径正确性
确认"users/" + txtUser.Text拼接后的路径和Firebase实时数据库中的用户节点路径完全匹配,注意大小写、特殊字符转义,同时检查用户输入的txtUser.Text是否为空或包含非法字符。查看原始响应定位问题
在解析前先获取并打印响应的原始内容,直接确认返回的是什么:string rawContent = response.Content; Console.WriteLine(rawContent);如果返回的是HTML错误页,能直接看到错误码和原因——比如404说明该用户不存在,403说明客户端没有读取该节点的权限。
检查Firebase数据库权限规则
登录Firebase控制台查看实时数据库规则,确保允许当前客户端读取users/{userId}节点。比如规则设置为仅认证用户可读取时,未登录的请求会被拒绝,返回权限错误的HTML页面。先判断响应状态再解析
不要直接解析响应,先判断请求是否成功再处理:FirebaseResponse response = client.Get("users/" + txtUser.Text); if (response.StatusCode == System.Net.HttpStatusCode.OK) { Utilizador resUser = response.ResultAs<Utilizador>(); // 执行后续登录逻辑 } else { // 根据状态码提示用户,比如"用户不存在"或"权限不足" MessageBox.Show("登录失败,请检查账号是否正确"); }验证实体类结构匹配
确保Utilizador类的属性名称、数据类型和Firebase中用户节点的JSON结构完全对应(注意大小写是否敏感)。不过这是次要排查项,当前错误是JSON格式本身异常,优先解决前面的问题。
内容的提问来源于stack exchange,提问作者Azevedo

