From c7ed6574ccc3e1d5b31c0bea5a57ef958c20d1c3 Mon Sep 17 00:00:00 2001 From: Redkale <8730487+redkale@users.noreply.github.com> Date: Mon, 18 Nov 2019 13:34:51 +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 | 22 +++++++++++++++++++ src/org/redkale/convert/json/JsonWriter.java | 4 ++-- 2 files changed, 24 insertions(+), 2 deletions(-) diff --git a/src/org/redkale/convert/json/JsonByteBufferWriter.java b/src/org/redkale/convert/json/JsonByteBufferWriter.java index 4b56da301..6d7d57cf0 100644 --- a/src/org/redkale/convert/json/JsonByteBufferWriter.java +++ b/src/org/redkale/convert/json/JsonByteBufferWriter.java @@ -106,6 +106,28 @@ 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); diff --git a/src/org/redkale/convert/json/JsonWriter.java b/src/org/redkale/convert/json/JsonWriter.java index fcc70b0f9..a5761cd3f 100644 --- a/src/org/redkale/convert/json/JsonWriter.java +++ b/src/org/redkale/convert/json/JsonWriter.java @@ -162,12 +162,12 @@ public class JsonWriter extends Writer { @Override public final void writeFieldName(String fieldName, Type fieldType, int fieldPos) { if (this.comma) writeTo(','); - writeTo(true, fieldName); + writeSmallString(fieldName); writeTo(':'); } @Override - public final void writeSmallString(String value) { + public void writeSmallString(String value) { writeTo(true, value); }