Skip to content

Commit 51c6aa1

Browse files
committed
Better Json Print Formatter
1 parent efe542a commit 51c6aa1

File tree

1 file changed

+13
-8
lines changed

1 file changed

+13
-8
lines changed

src/main/java/io/nats/client/support/JsonUtils.java

Lines changed: 13 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -459,6 +459,11 @@ public static String objectString(String name, Object o) {
459459
}
460460

461461
private static final int INDENT_WIDTH = 4;
462+
private static final String INDENT = " ";
463+
private static String indent(int level) {
464+
return level == 0 ? "" : INDENT.substring(0, level * INDENT_WIDTH);
465+
}
466+
462467
public static String getFormatted(Object o) {
463468
String s = o.toString();
464469
String newline = System.lineSeparator();
@@ -467,14 +472,14 @@ public static String getFormatted(Object o) {
467472
boolean begin_quotes = false;
468473

469474
boolean opened = false;
470-
int indent = 0;
475+
int indentLevel = 0;
476+
String indent = "";
471477
for (int x = 0; x < s.length(); x++) {
472478
char c = s.charAt(x);
473479

474480
if (c == '\"') {
475481
if (opened) {
476-
sb.append(newline)
477-
.append(String.format("%" + (indent += INDENT_WIDTH) + "s", ""));
482+
sb.append(newline).append(indent);
478483
opened = false;
479484
}
480485
sb.append(c);
@@ -488,12 +493,13 @@ public static String getFormatted(Object o) {
488493
case '[':
489494
sb.append(c);
490495
opened = true;
496+
indent = indent(++indentLevel);
491497
continue;
492498
case '}':
493499
case ']':
500+
indent = indent(--indentLevel);
494501
if (!opened) {
495-
sb.append(newline)
496-
.append((indent -= INDENT_WIDTH) > 0 ? String.format("%" + indent + "s", "") : "");
502+
sb.append(newline).append(indent);
497503
}
498504
sb.append(c);
499505
opened = false;
@@ -502,13 +508,12 @@ public static String getFormatted(Object o) {
502508
sb.append(c).append(" ");
503509
continue;
504510
case ',':
505-
sb.append(c).append(newline).append(indent > 0 ? String.format("%" + indent + "s", "") : "");
511+
sb.append(c).append(newline).append(indentLevel > 0 ? indent : "");
506512
continue;
507513
default:
508514
if (Character.isWhitespace(c)) continue;
509515
if (opened) {
510-
sb.append(newline)
511-
.append(String.format("%" + (indent += INDENT_WIDTH) + "s", ""));
516+
sb.append(newline).append(indent);
512517
opened = false;
513518
}
514519
}

0 commit comments

Comments
 (0)