方法一:利用(Map)JSONObject.fromObject(str);强转。有风险,不推荐。
方法二:数据库查出Map里存的有一键值是这种形式:params={amount=1000,name=zhangsan};
可以将键值取出进行这样处理,特别注意的是如果amount是科学记数法,amount=1,000 则需要进一步处理。这种方法不支持内部嵌套。
if(temp.get("params")!=null){ //将params变成json格式字符串 String jsonStr = temp.get("params").toString().replace("{", "{\""); jsonStr = jsonStr.replace("=", "\":\""); jsonStr = jsonStr.replace("}", "\"}"); jsonStr = jsonStr.replace(",", "\",\""); //如果amount是科学计数法,则需要将误操作的逗号转回普通逗号 Pattern pattern = Pattern.compile("(\",\")\\d"); Matcher matcher = pattern.matcher(jsonStr); while (matcher.find()) { jsonStr = jsonStr.replaceAll("(\",\")\\d",","+matcher.group(0).charAt(3)); } map.put("params",jsonStr); }
方法N:其他博主也有,可以自行查看。