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
相关产品推荐
相关产品推荐

