json的值中包含\r\n\r\n怎么解决?

在输出json的key/value字符串时,由于value中含有"\r\n\r\n"字符串,导致提示json格式错误,具体如下:
[{\"testa\":\"testc\"},{\"key\":\"value\r\n\r\nend\"}]
提示:
... { "key": "valueend" }]
----------------------^
Expecting 'STRING', 'NUMBER', 'NULL', 'TRUE', 'FALSE', '{', '['

请问哪位碰到过类似问题?应该怎样才能输出正确的结果?

对这些值进行转义。
另外检查下你的引号括号有没有闭合。

 [{\"testa\":\"testc\"},{\"key\":\"value\r\n\r\nend\"}]
 拼成
 [{\"testa\":\"testc\"},{\"key\":\"value\\r\\n\\r\\nend\"}]

待解析的JSON字符串中如果有特殊字符如\r\n,则应该在解析之前先替换掉,然后再解析。
可以根据JSON数据的作用来替换\r\n,例如如果是浏览器需要展示的数据可以替换成
换行;如果是普通数据则替换为空串或者空格。
示例代码:

import net.sf.json.JSONArray;
import net.sf.json.JSONObject;

public class JosnTestMain {
    public static void main(String[] args) {
        String t = "[{\"testa\":\"testc\"},{\"key\":\"value\r\n\r\nend\"}]";
        t = t.replaceAll("\r\n", "<br/>");
        JSONArray array = JSONArray.fromObject(t);
        for(int i = 0;i<array.size();i++){
            JSONObject object = array.getJSONObject(i);
            if(object.containsKey("key")){
                System.out.println(object.get("key"));
            }
        }
    }
} 

是的,转换成显示端换行格式就行了,例如网页就是 < br>就可以了