2727import java .util .Iterator ;
2828import java .util .List ;
2929import java .util .Map ;
30+ import java .util .StringJoiner ;
3031
3132public final class Json {
3233 private Json () {}
@@ -84,42 +85,42 @@ public String getWrapLine() {
8485 }
8586 }
8687
87- private final StringBuilder builder ;
88+ private final StringJoiner builder ;
8889 private final Step identStep ;
8990 private final Type type ;
9091 private int ident ;
9192
9293 public JsonStringBuilder (Step identStep ) {
93- builder = new StringBuilder (Type .PURE .getInitial ());
94+ builder = new StringJoiner ( "" ). add (Type .PURE .getInitial ());
9495 this .identStep = identStep ;
9596 this .type = Type .PURE ;
9697 }
9798
9899 public JsonStringBuilder (Type type ) {
99- builder = new StringBuilder (type .getInitial ());
100+ builder = new StringJoiner ( "" ). add (type .getInitial ());
100101 this .identStep = Step .TWO_SPACES ;
101102 this .type = type ;
102103 }
103104
104105 public JsonStringBuilder () {
105- builder = new StringBuilder ( );
106+ builder = new StringJoiner ( "" );
106107 this .identStep = Step .TWO_SPACES ;
107108 this .type = Type .PURE ;
108109 }
109110
110111 public JsonStringBuilder append (final char character ) {
111- builder .append ( character );
112+ builder .add ( String . valueOf ( character ) );
112113 return this ;
113114 }
114115
115116 public JsonStringBuilder append (final String string ) {
116- builder .append (string );
117+ builder .add (string );
117118 return this ;
118119 }
119120
120121 public JsonStringBuilder fillSpaces () {
121122 for (int index = 0 ; index < ident ; index += 1 ) {
122- builder .append ( identStep == Step .TABS ? '\t' : ' ' );
123+ builder .add ( String . valueOf ( identStep == Step .TABS ? '\t' : ' ' ) );
123124 }
124125 return this ;
125126 }
@@ -136,7 +137,7 @@ public JsonStringBuilder decIdent() {
136137
137138 public JsonStringBuilder newLine () {
138139 if (identStep != Step .COMPACT ) {
139- builder .append (type .getNewLine ());
140+ builder .add (type .getNewLine ());
140141 }
141142 return this ;
142143 }
@@ -435,52 +436,52 @@ public static String escape(String s) {
435436 if (s == null ) {
436437 return null ;
437438 }
438- StringBuilder sb = new StringBuilder ( );
439+ StringJoiner sb = new StringJoiner ( "" );
439440 escape (s , sb );
440441 return sb .toString ();
441442 }
442443
443- private static void escape (String s , StringBuilder sb ) {
444+ private static void escape (String s , StringJoiner sb ) {
444445 final int len = s .length ();
445446 for (int i = 0 ; i < len ; i ++) {
446447 char ch = s .charAt (i );
447448 switch (ch ) {
448449 case '"' :
449- sb .append ("\\ \" " );
450+ sb .add ("\\ \" " );
450451 break ;
451452 case '\\' :
452- sb .append ("\\ \\ " );
453+ sb .add ("\\ \\ " );
453454 break ;
454455 case '\b' :
455- sb .append ("\\ b" );
456+ sb .add ("\\ b" );
456457 break ;
457458 case '\f' :
458- sb .append ("\\ f" );
459+ sb .add ("\\ f" );
459460 break ;
460461 case '\n' :
461- sb .append ("\\ n" );
462+ sb .add ("\\ n" );
462463 break ;
463464 case '\r' :
464- sb .append ("\\ r" );
465+ sb .add ("\\ r" );
465466 break ;
466467 case '\t' :
467- sb .append ("\\ t" );
468+ sb .add ("\\ t" );
468469 break ;
469470 case '€' :
470- sb .append ("€" );
471+ sb .add ("€" );
471472 break ;
472473 default :
473474 if (ch <= '\u001F'
474475 || ch >= '\u007F' && ch <= '\u009F'
475476 || ch >= '\u2000' && ch <= '\u20FF' ) {
476477 String ss = Integer .toHexString (ch );
477- sb .append ("\\ u" );
478+ sb .add ("\\ u" );
478479 for (int k = 0 ; k < 4 - ss .length (); k ++) {
479- sb .append ( '0' );
480+ sb .add ( "0" );
480481 }
481- sb .append (ss .toUpperCase ());
482+ sb .add (ss .toUpperCase ());
482483 } else {
483- sb .append ( ch );
484+ sb .add ( String . valueOf ( ch ) );
484485 }
485486 break ;
486487 }
0 commit comments