场景描述:
前台传送过来的JSON字符串为:{"AGE":"[0 TO 1]"},在Java中解析为JSON之后,在控制台输出为:{"AGE":"\"[0 TO 1]\""};而当传送的字符串为{"AGE":"{1 TO 14]"}时,转换成JSON之后,在控制台输出为{"AGE":"{1 TO 14]"};
推断:
可能是因为两个中括号在JSON中是特殊的符号,就和“:”一样为特殊的符号。
这里提一下Java中遍历JSON的方法
JSONObject jsonObject = new JSONObject(jsonString);
Iterator iterator = jsonObject.keys();
while(iterator.hasNext()){
key = (String) iterator.next();
value = jsonObject.getString(key);
}
处理办法:
在调用时,将value两边的双引号去掉
JSONObject fqJson=JSONObject.fromObject(request.getParameter("fq"));
Iterator iterator = fqJson.keys();
String key;
while(iterator.hasNext()){
key = (String) iterator.next();
// 使用替换,是为了去除字符串中中括号两边多加的双引号,因为年龄范围是范围,如果加了双引号就指的字符串
fqmap.put(key,fqJson.getString(key).replace("\"",""));
}