diff --git a/src/main/java/com/endava/cats/util/SimpleJsonFormatter.java b/src/main/java/com/endava/cats/util/SimpleJsonFormatter.java index de3dcd93..ba9c8e03 100644 --- a/src/main/java/com/endava/cats/util/SimpleJsonFormatter.java +++ b/src/main/java/com/endava/cats/util/SimpleJsonFormatter.java @@ -54,7 +54,7 @@ private static String formatJsonString(String jsonStr) { } case '}', ']' -> { if (prevChar != '{' && prevChar != '[' && prevChar != '\n') { - formatted.append('\n').append(indent.repeat(indentLevel - 1)); + formatted.append('\n').append(indent.repeat(Math.max(0, indentLevel - 1))); } indentLevel--; formatted.append(currentChar); diff --git a/src/test/java/com/endava/cats/util/SimpleJsonFormatterTest.java b/src/test/java/com/endava/cats/util/SimpleJsonFormatterTest.java index 4ea0fb59..3636c0e9 100644 --- a/src/test/java/com/endava/cats/util/SimpleJsonFormatterTest.java +++ b/src/test/java/com/endava/cats/util/SimpleJsonFormatterTest.java @@ -44,4 +44,27 @@ void shouldHandleEscapedQuotesInJsonString() { String result = SimpleJsonFormatter.formatJson(input); assertThat(result).isEqualTo(expected); } + + @Test + void shouldHandleMalformedJsonWithExtraClosingBrackets() { + String input = "{\"key\":\"value\"}}"; + String result = SimpleJsonFormatter.formatJson(input); + assertThat(result).isNotNull(); + } + + @Test + void shouldHandleMalformedJsonWithExtraClosingSquareBrackets() { + String input = "[1,2,3]]"; + String result = SimpleJsonFormatter.formatJson(input); + assertThat(result).isNotNull(); + } + + @Test + void shouldHandleNestedStructures() { + String input = "{\"outer\":{\"inner\":{\"deep\":\"value\"}}}"; + String result = SimpleJsonFormatter.formatJson(input); + assertThat(result).contains("\"outer\":"); + assertThat(result).contains("\"inner\":"); + assertThat(result).contains("\"deep\": \"value\""); + } }