@@ -, +, @@ --- .../jmeter/report/dashboard/JsonizerVisitor.java | 5 +++-- .../report/processor/ErrorsSummaryConsumer.java | 11 +++++++++-- 2 files changed, 12 insertions(+), 4 deletions(-) --- a/src/core/src/main/java/org/apache/jmeter/report/dashboard/JsonizerVisitor.java +++ a/src/core/src/main/java/org/apache/jmeter/report/dashboard/JsonizerVisitor.java @@ -20,13 +20,14 @@ package org.apache.jmeter.report.dashboard; import java.util.HashMap; import java.util.Map; -import org.apache.commons.text.StringEscapeUtils; import org.apache.jmeter.report.core.JsonUtil; import org.apache.jmeter.report.processor.ListResultData; import org.apache.jmeter.report.processor.MapResultData; import org.apache.jmeter.report.processor.ResultData; import org.apache.jmeter.report.processor.ResultDataVisitor; import org.apache.jmeter.report.processor.ValueResultData; + +import com.fasterxml.jackson.core.io.JsonStringEncoder; /** * The class JsonizerVisitor provides a visitor that can get json-like string * from ResultData. @@ -96,7 +97,7 @@ public class JsonizerVisitor implements ResultDataVisitor { Object value = valueResult.getValue(); result = String.valueOf(value); if (value instanceof String) { - result = '"' + StringEscapeUtils.escapeEcmaScript(result.replace('\"', '\'')) + '"'; + result = '"' + new String(JsonStringEncoder.getInstance().quoteAsString(result)) + '"'; } } return result; --- a/src/core/src/main/java/org/apache/jmeter/report/processor/ErrorsSummaryConsumer.java +++ a/src/core/src/main/java/org/apache/jmeter/report/processor/ErrorsSummaryConsumer.java @@ -24,6 +24,8 @@ import org.apache.jmeter.report.utils.MetricUtils; import org.apache.jmeter.samplers.SampleSaveConfiguration; import org.apache.jmeter.util.JMeterUtils; +import com.fasterxml.jackson.core.io.JsonStringEncoder; + /** *

* The class ErrorSummaryConsumer provides a consumer that calculates error @@ -89,7 +91,7 @@ public class ErrorsSummaryConsumer extends AbstractSummaryConsumer { String responseCode = sample.getResponseCode(); String responseMessage = sample.getResponseMessage(); String key = responseCode + (!StringUtils.isEmpty(responseMessage) ? - "/" + StringEscapeUtils.escapeJson(StringEscapeUtils.escapeHtml4(responseMessage)) : ""); + "/" + escapeJson(responseMessage) : ""); if (MetricUtils.isSuccessCode(responseCode) || (StringUtils.isEmpty(responseCode) && !StringUtils.isEmpty(sample.getFailureMessage()))) { @@ -97,12 +99,17 @@ public class ErrorsSummaryConsumer extends AbstractSummaryConsumer { if (ASSERTION_RESULTS_FAILURE_MESSAGE) { String msg = sample.getFailureMessage(); if (!StringUtils.isEmpty(msg)) { - key = StringEscapeUtils.escapeJson(StringEscapeUtils.escapeHtml4(msg)); + key = escapeJson(msg); } } } return key; } + + private static String escapeJson(String responseMessage) { + return new String(JsonStringEncoder.getInstance().quoteAsString(StringEscapeUtils.escapeHtml4(responseMessage))); + } + /* * (non-Javadoc) * --