You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Flutter存储的token带前后斜杠与引号 如何删除这些冗余字符?

问题根因

你遇到的冗余字符问题核心是存储token时多余调用了json.encode()方法:
body['access_token']本身已经是标准的JWT字符串格式,对普通字符串执行JSON编码操作时,JSON序列化规则会自动给字符串首尾添加双引号,内部的特殊符号也会被添加反斜杠转义,因此读取本地存储的内容时就会出现多余的转义符和包裹引号。

解决方案

方案一:永久修复(推荐)

直接修改token存储逻辑,去掉多余的JSON编码操作,直接存储接口返回的原始token字符串即可:

// 修改前 错误写法
// localStorage.setString('token',json.encode(body['access_token']));
// 修改后 正确写法
localStorage.setString('token', body['access_token']);

修改完成后需要先清除本地已存储的旧错误格式token,重新登录获取新token存储后,读写逻辑就会完全正常。

方案二:临时兼容(无需修改存储逻辑)

如果当前不方便调整存储逻辑,可以在读取token之后先做格式处理,再传入请求头使用,有两种常用处理方式:

  1. 用JSON解码还原原始字符串
token = json.decode(localStorage.getString('token')!);
  1. 手动清理冗余字符
// 先清除所有反斜杠,再去掉首尾的双引号
token = localStorage.getString('token')!.replaceAll(r'\', '').replaceAll('"', '');

处理完成后的token就可以直接传入_setHeaders()方法使用,请求头的Bearer字段就不会再携带多余符号。


内容的提问来源于stack exchange,提问作者Daco

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.29 19:54:03