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

Flutter中如何从指定字符串生成列表?无法转为JSON字符串

解决非标准JSON格式字符串转列表的问题

你的字符串不符合标准JSON规范,所以无法直接用JSON解析工具转换。问题出在:JSON要求所有键和字符串值必须用双引号包裹,而你的字符串里的键(如emp_username)和值(如gg)都没有双引号。

下面提供两种可行的解决方法:

方法一:修正为标准JSON后解析

先通过字符串替换给键和值加上双引号,再用JSON库解析:

String s = "[{emp_username: gg, emp_designation: ty, emp_contact: hh, emp_email: yy, emp_address: hu}]";
// 给所有键添加双引号
String standardJson = s.replaceAll("(\\w+):", "\"$1\":");
// 给所有字符串值添加双引号(适用于值为无空格单词的情况)
standardJson = standardJson.replaceAll(": (\\w+)", ": \"$1\"");

// 以Gson库为例解析成列表
Gson gson = new Gson();
List<Map<String, String>> employeeList = gson.fromJson(standardJson, 
    new TypeToken<List<Map<String, String>>>(){}.getType());

方法二:直接拆分字符串生成列表

如果不需要依赖JSON库,可以直接拆分字符串提取数据:

String s = "[{emp_username: gg, emp_designation: ty, emp_contact: hh, emp_email: yy, emp_address: hu}]";
// 去除外层的[]和{}
String innerContent = s.substring(2, s.length() - 2);
// 按逗号分割键值对
String[] keyValuePairs = innerContent.split(", ");

Map<String, String> employeeMap = new HashMap<>();
for (String pair : keyValuePairs) {
    String[] parts = pair.split(": ");
    employeeMap.put(parts[0], parts[1]);
}

List<Map<String, String>> employeeList = new ArrayList<>();
employeeList.add(employeeMap);

注意事项

如果你的值中包含逗号、冒号或者空格,上面的简单替换/拆分逻辑会失效,这时候需要使用更严谨的正则表达式匹配完整的键值对,或者编写自定义的解析器。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.03 20:35:26