diff --git a/src/components/org/apache/jmeter/extractor/json/render/RenderAsJsonRenderer.java b/src/components/org/apache/jmeter/extractor/json/render/RenderAsJsonRenderer.java index a0a27d2461..5d7a352236 100644 --- a/src/components/org/apache/jmeter/extractor/json/render/RenderAsJsonRenderer.java +++ b/src/components/org/apache/jmeter/extractor/json/render/RenderAsJsonRenderer.java @@ -58,7 +58,7 @@ import org.slf4j.LoggerFactory; public class RenderAsJsonRenderer implements ResultRenderer, ActionListener { private static final Logger log = LoggerFactory.getLogger(RenderAsJsonRenderer.class); - + private static final String NO_MATCH = "NO MATCH"; //$NON-NLS-1$ private static final String TAB_SEPARATOR = " "; //$NON-NLS-1$ private static final String JSONPATH_TESTER_COMMAND = "jsonpath_tester"; // $NON-NLS-1$ @@ -121,7 +121,7 @@ public class RenderAsJsonRenderer implements ResultRenderer, ActionListener { try { List matchStrings = extractWithJSonPath(textToParse, jsonPathExpressionField.getText()); if (matchStrings.isEmpty()) { - return "NO MATCH"; //$NON-NLS-1$ + return NO_MATCH; //$NON-NLS-1$ } else { StringBuilder builder = new StringBuilder(); int i = 0; @@ -149,14 +149,8 @@ public class RenderAsJsonRenderer implements ResultRenderer, ActionListener { @Override public void renderResult(SampleResult sampleResult) { String response = ViewResultsFullVisualizer.getResponseAsString(sampleResult); - try { - jsonDataField.setText(response == null ? "" : RenderAsJSON.prettyJSON(response, TAB_SEPARATOR)); //$NON-NLS-1$ - jsonDataField.setCaretPosition(0); - } catch (Exception e) { - log.error("Exception converting to XML: {}, message: {}", response, e.getMessage(), e); //$NON-NLS-1$ $NON-NLS-2$ - jsonDataField.setText("Exception converting to XML: "+response+ ", message: "+e.getMessage()); //$NON-NLS-1$ $NON-NLS-2$ - jsonDataField.setCaretPosition(0); - } + jsonDataField.setText(response == null ? "" : RenderAsJSON.prettyJSON(response, TAB_SEPARATOR)); //$NON-NLS-1$ + jsonDataField.setCaretPosition(0); } diff --git a/src/components/org/apache/jmeter/visualizers/RenderAsJSON.java b/src/components/org/apache/jmeter/visualizers/RenderAsJSON.java index 0242433f82..a91a9e0c3f 100644 --- a/src/components/org/apache/jmeter/visualizers/RenderAsJSON.java +++ b/src/components/org/apache/jmeter/visualizers/RenderAsJSON.java @@ -28,7 +28,6 @@ import org.apache.jmeter.util.JMeterUtils; import net.minidev.json.JSONArray; import net.minidev.json.JSONObject; import net.minidev.json.JSONStyle; -import net.minidev.json.JSONValue; import net.minidev.json.parser.JSONParser; import net.minidev.json.parser.ParseException; @@ -76,9 +75,6 @@ public class RenderAsJSON extends SamplerResultTab implements ResultRenderer { } else if (o instanceof JSONArray) { return ((JSONArray) o) .toJSONString(new PrettyJSONStyle(tabSeparator)); - } else if (o instanceof JSONValue) { - return ((JSONValue) o) - .toJSONString(new PrettyJSONStyle(tabSeparator)); } } catch (ParseException e) { return json; diff --git a/test/src/org/apache/jmeter/extractor/json/render/RenderAsJsonRendererSpec.groovy b/test/src/org/apache/jmeter/extractor/json/render/RenderAsJsonRendererSpec.groovy index 60a1632c50..1048dc9e59 100644 --- a/test/src/org/apache/jmeter/extractor/json/render/RenderAsJsonRendererSpec.groovy +++ b/test/src/org/apache/jmeter/extractor/json/render/RenderAsJsonRendererSpec.groovy @@ -57,21 +57,41 @@ class RenderAsJsonRendererSpec extends JMeterSpec { sut.jsonDataField.getText() == "" } - def "render JSON Response"() { + def "render '#input' as JSON Response to '#output'"() { given: sut.init(); def sampleResult = new SampleResult(); - sampleResult.setResponseData("{name:\"Ludwig\",age: 23,city: \"Bonn\"}"); when: + sampleResult.setResponseData(input); sut.renderResult(sampleResult) then: - sut.jsonDataField.getText() == '''{ + output == sut.jsonDataField.getText() + where: + input | output + "This is not json" | "This is not json" + "{name:\"Ludwig\",age: 23,city: \"Bonn\"}" | '''{ "city": "Bonn", "name": "Ludwig", "age": 23 }''' } + def "execute '#expression' on '#input' results into '#output'"() { + given: + sut.init(); + sut.jsonPathExpressionField.setText(expression); + def sampleResult = new SampleResult(); + when: + sut.executeAndJSonPathTester(input); + then: + output == sut.jsonPathResultField.getText() + where: + input | expression | output + "{name:\"Ludwig\",age: 23,city: \"Bonn\"}" | "\$..name" | "Result[0]=Ludwig\n" + "This is not json" | "\$..name" | "NO MATCH" + "{name:\"Ludwig\",age: 23,city: \"Bonn\"}" | "\$.." | "Exception: Path must not end with a '.' or '..'" + } + def "clearData clears expected fields"() { given: sut.init() diff --git a/xdocs/changes.xml b/xdocs/changes.xml index 9f7cd32fbf..68716339aa 100644 --- a/xdocs/changes.xml +++ b/xdocs/changes.xml @@ -136,6 +136,7 @@ Summary

Listeners

Timers, Assertions, Config, Pre- & Post-Processors