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

Flutter/Dart中替换$符号及访问含$t键的JSON数据方法

解决Flutter/Dart中访问含$的JSON键及替换$符号的问题

我帮你拆解一下问题,分两种场景来解决:

一、直接访问JSON中的$t键

你遇到的错误是因为Dart的字符串插值特性——当你在双引号字符串里写$t时,Dart会把它当成一个变量来解析,而不是字面量的键名。解决方法很简单:

方法1:使用单引号包裹键名

Dart中单引号字符串不支持插值,所以直接用单引号把$t包起来,就能作为普通键名访问:

String bookTitle = jsonData['gamebook']['meta']['title']['$t'];

方法2:在双引号中转义$符号

如果习惯用双引号,只需要给$加反斜杠转义,让Dart把它当成普通字符:

String bookTitle = jsonData['gamebook']['meta']['title']['\$t'];

两种方式都能正常拿到$t对应的值,不会触发插值错误。

二、转换为JSON前替换$t键名

如果你想彻底换掉这个特殊键名,避免后续麻烦,在处理字符串时需要注意转义$,防止被Dart当成插值:

处理JSON字符串(转换后替换)

假设你已经把XML转成了JSON字符串,直接用replaceAll时,用单引号包裹目标字符串,或者在双引号中转义$:

// 方式1:单引号(推荐,无需转义)
String modifiedJsonStr = originalJsonStr.replaceAll('$t', 'text');

// 方式2:双引号转义$
String modifiedJsonStr = originalJsonStr.replaceAll('\$t', 'text');

之后再把修改后的字符串解析为JSON对象,就可以用新键名(比如text)访问了。

处理XML字符串(转换前替换)

如果想在XML阶段就替换,逻辑类似,找到XML中对应$t的节点字符串,用同样的替换方式处理后再转JSON即可。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.13 07:38:55