From 934c82eadd41334d9b3d80a639787cde31c1c770 Mon Sep 17 00:00:00 2001 From: Redkale <8730487+redkale@users.noreply.github.com> Date: Mon, 18 Nov 2019 13:42:55 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BC=98=E5=8C=96JsonWrite.writeSmallString?= =?UTF-8?q?=E6=96=B9=E6=B3=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../convert/json/JsonByteBufferWriter.java | 52 +++++++++---------- .../convert/json/JsonStreamWriter.java | 6 +-- src/org/redkale/convert/json/JsonWriter.java | 14 ++--- 3 files changed, 35 insertions(+), 37 deletions(-) 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