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

Dart中如何将单引号类JSON字符串转换为列表?

解决JSON解析时单引号导致的FormatException问题

嘿,我太懂你遇到的这个坑了!这个报错的核心原因很明确——JSON语法有严格规定:字符串必须用双引号包裹,而你传入的字符串用的是单引号,完全不符合JSON的规范,所以json.decode()才会抛出FormatException。

下面给你几个实用的解决方案:

方案1:修改原始字符串格式(最推荐)

如果你能控制生成这个字符串的源头,直接把单引号换成双引号,这样就能直接正常解析了:

import 'dart:convert';

void main() {
  List<String> result = json.decode('["Curry Me Up","Curry Culture"]');
  print(result); // 输出: [Curry Me Up, Curry Culture]
}

方案2:先替换单引号再解析

如果没办法修改原始字符串,那就先把字符串里的所有单引号替换成双引号,再进行解析:

import 'dart:convert';

void main() {
  String rawStr = "['Curry Me Up','Curry Culture']";
  // 将单引号替换为双引号,转换成合法的JSON格式
  String validJsonStr = rawStr.replaceAll("'", '"');
  List<String> result = json.decode(validJsonStr);
  print(result); // 输出: [Curry Me Up, Curry Culture]
}

⚠️ 小提醒:如果你的字符串内容本身包含单引号(比如['Curry 'n' Up','Curry Culture']),这种简单替换会出问题,这时候可能需要更复杂的正则处理,但如果你的场景里没有这种特殊情况,这个方法完全够用。

方案3:避免使用JSON解析(不推荐)

有些情况下你可能会想到用eval类的方法直接执行字符串,但这种方式存在安全风险(如果字符串来自不可信来源的话),所以非常不推荐使用。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.09 12:07:52