优化JsonWrite.writeSmallString方法

This commit is contained in:
Redkale
2019-11-18 13:34:51 +08:00
parent 2ea2667fa7
commit c7ed6574cc
2 changed files with 24 additions and 2 deletions

View File

@@ -106,6 +106,28 @@ public class JsonByteBufferWriter extends JsonWriter {
this.buffers[index].put((byte) ch); this.buffers[index].put((byte) ch);
} }
@Override
public void writeSmallString(String value) {
byte[] bs = Utility.byteArray(value);
int expandsize = expand(bs.length + 2);
if (expandsize == 0) {// 只需要一个buffer
final ByteBuffer buffer = this.buffers[index];
buffer.put((byte) '"');
buffer.put(bs);
buffer.put((byte) '"');
} else {
ByteBuffer buffer = this.buffers[index];
if (!buffer.hasRemaining()) buffer = nextByteBuffer();
buffer.put((byte) '"');
for (byte b : bs) {
if (!buffer.hasRemaining()) buffer = nextByteBuffer();
buffer.put(b);
}
if (!buffer.hasRemaining()) buffer = nextByteBuffer();
buffer.put((byte) '"');
}
}
@Override @Override
public void writeTo(final char[] chs, final int start, final int len) { public void writeTo(final char[] chs, final int start, final int len) {
writeTo(-1, false, chs, start, len); writeTo(-1, false, chs, start, len);

View File

@@ -162,12 +162,12 @@ public class JsonWriter extends Writer {
@Override @Override
public final void writeFieldName(String fieldName, Type fieldType, int fieldPos) { public final void writeFieldName(String fieldName, Type fieldType, int fieldPos) {
if (this.comma) writeTo(','); if (this.comma) writeTo(',');
writeTo(true, fieldName); writeSmallString(fieldName);
writeTo(':'); writeTo(':');
} }
@Override @Override
public final void writeSmallString(String value) { public void writeSmallString(String value) {
writeTo(true, value); writeTo(true, value);
} }