diff --git a/src/org/redkale/convert/json/JsonByteBufferWriter.java b/src/org/redkale/convert/json/JsonByteBufferWriter.java index 6d7d57cf0..a8b4260a3 100644 --- a/src/org/redkale/convert/json/JsonByteBufferWriter.java +++ b/src/org/redkale/convert/json/JsonByteBufferWriter.java @@ -106,28 +106,6 @@ public class JsonByteBufferWriter extends JsonWriter { 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 public void writeTo(final char[] chs, final int start, final int len) { writeTo(-1, false, chs, start, len); @@ -263,19 +241,39 @@ public class JsonByteBufferWriter extends JsonWriter { * @param value String值 */ @Override - public void writeTo(final boolean quote, final String value) { - char[] chs = Utility.charArray(value); - writeTo(-1, quote, chs, 0, chs.length); + public void writeLatin1To(final boolean quote, final String value) { + byte[] bs = Utility.byteArray(value); + 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 public void writeInt(int value) { - writeTo(false, String.valueOf(value)); + writeLatin1To(false, String.valueOf(value)); } @Override public void writeLong(long value) { - writeTo(false, String.valueOf(value)); + writeLatin1To(false, String.valueOf(value)); } @Override diff --git a/src/org/redkale/convert/json/JsonStreamWriter.java b/src/org/redkale/convert/json/JsonStreamWriter.java index 3edf18840..563a37ed2 100644 --- a/src/org/redkale/convert/json/JsonStreamWriter.java +++ b/src/org/redkale/convert/json/JsonStreamWriter.java @@ -87,19 +87,19 @@ class JsonStreamWriter extends JsonByteBufferWriter { * @param value String值 */ @Override - public void writeTo(final boolean quote, final String value) { + public void writeLatin1To(final boolean quote, final String value) { char[] chs = Utility.charArray(value); writeTo(quote, chs, 0, chs.length); } @Override public void writeInt(int value) { - writeTo(false, String.valueOf(value)); + writeLatin1To(false, String.valueOf(value)); } @Override public void writeLong(long value) { - writeTo(false, String.valueOf(value)); + writeLatin1To(false, String.valueOf(value)); } @Override diff --git a/src/org/redkale/convert/json/JsonWriter.java b/src/org/redkale/convert/json/JsonWriter.java index a5761cd3f..c92973759 100644 --- a/src/org/redkale/convert/json/JsonWriter.java +++ b/src/org/redkale/convert/json/JsonWriter.java @@ -89,7 +89,7 @@ public class JsonWriter extends Writer { * @param quote 是否加双引号 * @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(); expand(len + (quote ? 2 : 0)); if (quote) content[count++] = '"'; @@ -162,13 +162,13 @@ public class JsonWriter extends Writer { @Override public final void writeFieldName(String fieldName, Type fieldType, int fieldPos) { if (this.comma) writeTo(','); - writeSmallString(fieldName); + writeLatin1To(true, fieldName); writeTo(':'); } @Override - public void writeSmallString(String value) { - writeTo(true, value); + public final void writeSmallString(String value) { + writeLatin1To(true, value); } @Override @@ -314,17 +314,17 @@ public class JsonWriter extends Writer { @Override public final void writeFloat(float value) { - writeTo(false, String.valueOf(value)); + writeLatin1To(false, String.valueOf(value)); } @Override public final void writeDouble(double value) { - writeTo(false, String.valueOf(value)); + writeLatin1To(false, String.valueOf(value)); } @Override public final void writeWrapper(StringWrapper value) { - writeTo(false, String.valueOf(value)); + writeLatin1To(false, String.valueOf(value)); } @Override