优化JsonWrite.writeSmallString方法
This commit is contained in:
@@ -106,28 +106,6 @@ 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);
|
||||||
@@ -263,19 +241,39 @@ public class JsonByteBufferWriter extends JsonWriter {
|
|||||||
* @param value String值
|
* @param value String值
|
||||||
*/
|
*/
|
||||||
@Override
|
@Override
|
||||||
public void writeTo(final boolean quote, final String value) {
|
public void writeLatin1To(final boolean quote, final String value) {
|
||||||
char[] chs = Utility.charArray(value);
|
byte[] bs = Utility.byteArray(value);
|
||||||
writeTo(-1, quote, chs, 0, chs.length);
|
int expandsize = expand(bs.length + (quote ? 2 : 0));
|
||||||
|
if (expandsize == 0) {// 只需要一个buffer
|
||||||
|
final ByteBuffer buffer = this.buffers[index];
|
||||||
|
if (quote) buffer.put((byte) '"');
|
||||||
|
buffer.put(bs);
|
||||||
|
if (quote) buffer.put((byte) '"');
|
||||||
|
} else {
|
||||||
|
ByteBuffer buffer = this.buffers[index];
|
||||||
|
if (quote) {
|
||||||
|
if (!buffer.hasRemaining()) buffer = nextByteBuffer();
|
||||||
|
buffer.put((byte) '"');
|
||||||
|
}
|
||||||
|
for (byte b : bs) {
|
||||||
|
if (!buffer.hasRemaining()) buffer = nextByteBuffer();
|
||||||
|
buffer.put(b);
|
||||||
|
}
|
||||||
|
if (quote) {
|
||||||
|
if (!buffer.hasRemaining()) buffer = nextByteBuffer();
|
||||||
|
buffer.put((byte) '"');
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void writeInt(int value) {
|
public void writeInt(int value) {
|
||||||
writeTo(false, String.valueOf(value));
|
writeLatin1To(false, String.valueOf(value));
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void writeLong(long value) {
|
public void writeLong(long value) {
|
||||||
writeTo(false, String.valueOf(value));
|
writeLatin1To(false, String.valueOf(value));
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|||||||
@@ -87,19 +87,19 @@ class JsonStreamWriter extends JsonByteBufferWriter {
|
|||||||
* @param value String值
|
* @param value String值
|
||||||
*/
|
*/
|
||||||
@Override
|
@Override
|
||||||
public void writeTo(final boolean quote, final String value) {
|
public void writeLatin1To(final boolean quote, final String value) {
|
||||||
char[] chs = Utility.charArray(value);
|
char[] chs = Utility.charArray(value);
|
||||||
writeTo(quote, chs, 0, chs.length);
|
writeTo(quote, chs, 0, chs.length);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void writeInt(int value) {
|
public void writeInt(int value) {
|
||||||
writeTo(false, String.valueOf(value));
|
writeLatin1To(false, String.valueOf(value));
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void writeLong(long value) {
|
public void writeLong(long value) {
|
||||||
writeTo(false, String.valueOf(value));
|
writeLatin1To(false, String.valueOf(value));
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|||||||
@@ -89,7 +89,7 @@ public class JsonWriter extends Writer {
|
|||||||
* @param quote 是否加双引号
|
* @param quote 是否加双引号
|
||||||
* @param value 非null且不含需要转义的字符的String值
|
* @param value 非null且不含需要转义的字符的String值
|
||||||
*/
|
*/
|
||||||
public void writeTo(final boolean quote, final String value) {
|
public void writeLatin1To(final boolean quote, final String value) {
|
||||||
int len = value.length();
|
int len = value.length();
|
||||||
expand(len + (quote ? 2 : 0));
|
expand(len + (quote ? 2 : 0));
|
||||||
if (quote) content[count++] = '"';
|
if (quote) content[count++] = '"';
|
||||||
@@ -162,13 +162,13 @@ 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(',');
|
||||||
writeSmallString(fieldName);
|
writeLatin1To(true, fieldName);
|
||||||
writeTo(':');
|
writeTo(':');
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void writeSmallString(String value) {
|
public final void writeSmallString(String value) {
|
||||||
writeTo(true, value);
|
writeLatin1To(true, value);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@@ -314,17 +314,17 @@ public class JsonWriter extends Writer {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public final void writeFloat(float value) {
|
public final void writeFloat(float value) {
|
||||||
writeTo(false, String.valueOf(value));
|
writeLatin1To(false, String.valueOf(value));
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public final void writeDouble(double value) {
|
public final void writeDouble(double value) {
|
||||||
writeTo(false, String.valueOf(value));
|
writeLatin1To(false, String.valueOf(value));
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public final void writeWrapper(StringWrapper value) {
|
public final void writeWrapper(StringWrapper value) {
|
||||||
writeTo(false, String.valueOf(value));
|
writeLatin1To(false, String.valueOf(value));
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|||||||
Reference in New Issue
Block a user