This commit is contained in:
@@ -197,50 +197,47 @@ public final class JsonByteBufferWriter extends JsonWriter {
|
||||
writeNull();
|
||||
return;
|
||||
}
|
||||
ByteBuffer buffer = this.buffers[index];
|
||||
expand(1);
|
||||
if (!buffer.hasRemaining()) buffer = nextByteBuffer();
|
||||
buffer.put((byte) '"');
|
||||
|
||||
for (char ch : Utility.charArray(value)) {
|
||||
final char[] chs = Utility.charArray(value);
|
||||
int len = 0;
|
||||
for (char ch : chs) {
|
||||
switch (ch) {
|
||||
case '\n': expand(2);
|
||||
if (!buffer.hasRemaining()) buffer = nextByteBuffer();
|
||||
buffer.put((byte) '\\');
|
||||
if (!buffer.hasRemaining()) buffer = nextByteBuffer();
|
||||
buffer.put((byte) 'n');
|
||||
case '\n': len += 2;
|
||||
break;
|
||||
case '\r': expand(2);
|
||||
if (!buffer.hasRemaining()) buffer = nextByteBuffer();
|
||||
buffer.put((byte) '\\');
|
||||
if (!buffer.hasRemaining()) buffer = nextByteBuffer();
|
||||
buffer.put((byte) 'r');
|
||||
case '\r': len += 2;
|
||||
break;
|
||||
case '\t': expand(2);
|
||||
if (!buffer.hasRemaining()) buffer = nextByteBuffer();
|
||||
buffer.put((byte) '\\');
|
||||
if (!buffer.hasRemaining()) buffer = nextByteBuffer();
|
||||
buffer.put((byte) 't');
|
||||
case '\t': len += 2;
|
||||
break;
|
||||
case '\\': expand(2);
|
||||
if (!buffer.hasRemaining()) buffer = nextByteBuffer();
|
||||
buffer.put((byte) '\\');
|
||||
if (!buffer.hasRemaining()) buffer = nextByteBuffer();
|
||||
buffer.put((byte) '\\');
|
||||
case '\\': len += 2;
|
||||
break;
|
||||
case '"': expand(2);
|
||||
if (!buffer.hasRemaining()) buffer = nextByteBuffer();
|
||||
buffer.put((byte) '\\');
|
||||
if (!buffer.hasRemaining()) buffer = nextByteBuffer();
|
||||
buffer.put((byte) '"');
|
||||
case '"': len += 2;
|
||||
break;
|
||||
default: buffer = putChar(buffer, ch);
|
||||
default: len++;
|
||||
break;
|
||||
}
|
||||
}
|
||||
expand(1);
|
||||
if (!buffer.hasRemaining()) buffer = nextByteBuffer();
|
||||
buffer.put((byte) '"');
|
||||
if (len == chs.length) {
|
||||
writeTo(true, chs, 0, len);
|
||||
} else {
|
||||
StringBuilder sb = new StringBuilder(len);
|
||||
for (char ch : chs) {
|
||||
switch (ch) {
|
||||
case '\n': sb.append("\\n");
|
||||
break;
|
||||
case '\r': sb.append("\\r");
|
||||
break;
|
||||
case '\t': sb.append("\\t");
|
||||
break;
|
||||
case '\\': sb.append("\\\\");
|
||||
break;
|
||||
case '"': sb.append("\\\"");
|
||||
break;
|
||||
default: sb.append(ch);
|
||||
break;
|
||||
}
|
||||
}
|
||||
char[] cs = Utility.charArray(sb);
|
||||
writeTo(true, cs, 0, sb.length());
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
Reference in New Issue
Block a user