Ответ 1
Как отметил Райан в (очень хороших) комментариях Sotirios Delimanolis, ответьте:
- Javascript Object Notation указывает, что
Any character may be escaped
. Очевидно, это означает, что даже одиночные кавычки могут быть. - Однако, как указал Райан (опять же в тех же комментариях), это возникает как ошибка при реализации jQuery Ajax. см. одинарная кавычка jQuery в ответе JSON
Итак, похоже, что это просто выбор реализации, который теперь оставляет нас со стандартом, который на самом деле не выполняется последовательно... sigh
В любом случае, вот работа, которую вы можете использовать, чтобы заставить ваш код работать
<%@ page trimDirectiveWhitespaces="true" contentType="json/application"%>
<%@ taglib prefix="spring" uri="http://www.springframework.org/tags"%>
<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions" %>
<%--
[1] Removing the escape of the single quote character: jQuery Ajax cannot handle it
stackoverflow.com/questions/25491391/springescapebody-results-in-invalid-json
stackoverflow.com/questions/2275359/jquery-single-quote-in-json-response
--%>
<c:set var="someJsonData" >
<spring:escapeBody javaScriptEscape="true">
if you don't have "user" an account
</spring:escapeBody>
</c:set>
{
"status": "success",
"body" : "${fn:replace(someJsonData, "\\\'","'")}" , <%-- [1] --%>
}
Наверное, не чистое/лучшее решение, если честно. Но он выполняет эту работу, пока вы не найдете лучшего.