diff --git a/src/main/java/org/redkale/convert/json/JsonByteBufferWriter.java b/src/main/java/org/redkale/convert/json/JsonByteBufferWriter.java index 455ca94c3..c5418d1eb 100644 --- a/src/main/java/org/redkale/convert/json/JsonByteBufferWriter.java +++ b/src/main/java/org/redkale/convert/json/JsonByteBufferWriter.java @@ -9,7 +9,6 @@ import java.nio.*; import java.nio.charset.Charset; import java.util.Objects; import java.util.function.Supplier; -import org.redkale.convert.ConvertException; import org.redkale.convert.Encodeable; import org.redkale.util.*; @@ -113,20 +112,6 @@ public class JsonByteBufferWriter extends JsonWriter { return size; } - @Override - public void writeTo(final char ch) { - if (ch > Byte.MAX_VALUE) { - throw new ConvertException("writeTo char(int.value = " + (int) ch + ") must be less 127"); - } - expand(1); - this.buffers[currBufIndex].put((byte) ch); - } - - @Override - public void writeTo(final char[] chs, final int start, final int len) { - writeTo(-1, false, chs, start, len); - } - @Override public void writeTo(final byte ch) { // 只能是 0 - 127 的字符 expand(1); diff --git a/src/main/java/org/redkale/convert/json/JsonBytesWriter.java b/src/main/java/org/redkale/convert/json/JsonBytesWriter.java index 96514a3f0..e9f6e2d80 100644 --- a/src/main/java/org/redkale/convert/json/JsonBytesWriter.java +++ b/src/main/java/org/redkale/convert/json/JsonBytesWriter.java @@ -129,21 +129,6 @@ public class JsonBytesWriter extends JsonWriter implements ByteTuple { } } - @Override - public void writeTo(final char ch) { // 只能是 0 - 127 的字符 - expand(1); - content[count++] = (byte) ch; - } - - @Override - public void writeTo(final char[] chs, final int start, final int len) { // 只能是 0 - 127 的字符 - expand(len); - for (int i = 0; i < len; i++) { - content[count + i] = (byte) chs[start + i]; - } - count += len; - } - @Override public void writeTo(final byte ch) { // 只能是 0 - 127 的字符 expand(1); diff --git a/src/main/java/org/redkale/convert/json/JsonCharsWriter.java b/src/main/java/org/redkale/convert/json/JsonCharsWriter.java index 6f83d5dfd..2e1093e2b 100644 --- a/src/main/java/org/redkale/convert/json/JsonCharsWriter.java +++ b/src/main/java/org/redkale/convert/json/JsonCharsWriter.java @@ -4,7 +4,10 @@ */ package org.redkale.convert.json; +import java.lang.reflect.Type; +import org.redkale.convert.EnMember; import org.redkale.convert.Encodeable; +import static org.redkale.convert.json.JsonWriter.BYTE_COLON; import static org.redkale.convert.json.JsonWriter.BYTE_COMMA; import static org.redkale.convert.json.JsonWriter.BYTE_DQUOTE; import static org.redkale.convert.json.JsonWriter.DEFAULT_SIZE; @@ -87,13 +90,11 @@ public class JsonCharsWriter extends JsonWriter { return true; } - @Override public void writeTo(final char ch) { // 只能是 0 - 127 的字符 expand(1); content[count++] = ch; } - @Override public void writeTo(final char[] chs, final int start, final int len) { // 只能是 0 - 127 的字符 expand(len); System.arraycopy(chs, start, content, count, len); @@ -115,6 +116,19 @@ public class JsonCharsWriter extends JsonWriter { count += len; } + @Override // 只容许JsonBytesWriter重写此方法 + public final void writeField(EnMember member, String fieldName, Type fieldType, int fieldPos) { + if (this.comma) { + writeTo(BYTE_COMMA); + } + if (member != null) { + writeTo(member.getJsonFieldNameChars()); + } else { + writeLatin1To(true, fieldName); + writeTo(BYTE_COLON); + } + } + /** * 注意: 该String值不能为null且不会进行转义, 只用于不含需要转义字符的字符串,例如enum、double、BigInteger、BigDecimal转换的String * @@ -305,6 +319,10 @@ public class JsonCharsWriter extends JsonWriter { return this.count; } + public final void writeTo(final char... cs) { // 只能是 0 - 127 的字符 + writeTo(cs, 0, cs.length); + } + @Override public final void writeNull() { writeTo(CHARS_NULL); diff --git a/src/main/java/org/redkale/convert/json/JsonStreamWriter.java b/src/main/java/org/redkale/convert/json/JsonStreamWriter.java index f0b490327..f9839de97 100644 --- a/src/main/java/org/redkale/convert/json/JsonStreamWriter.java +++ b/src/main/java/org/redkale/convert/json/JsonStreamWriter.java @@ -45,18 +45,6 @@ class JsonStreamWriter extends JsonByteBufferWriter { } } - @Override - public void writeTo(final char ch) { - if (ch > Byte.MAX_VALUE) { - throw new ConvertException("writeTo char(int.value = " + (int) ch + ") must be less 127"); - } - try { - out.write((byte) ch); - } catch (IOException e) { - throw new ConvertException(e); - } - } - @Override public void writeTo(final byte[] bs, final int start, final int len) { // 只能是 0 - 127 的字符 try { @@ -66,11 +54,6 @@ class JsonStreamWriter extends JsonByteBufferWriter { } } - @Override - public void writeTo(final char[] chs, final int start, final int len) { - writeTo(false, chs, start, len); - } - private void writeTo(final boolean quote, final char[] chs, final int start, final int len) { try { if (quote) { diff --git a/src/main/java/org/redkale/convert/json/JsonWriter.java b/src/main/java/org/redkale/convert/json/JsonWriter.java index 449fc09f6..c3f560781 100644 --- a/src/main/java/org/redkale/convert/json/JsonWriter.java +++ b/src/main/java/org/redkale/convert/json/JsonWriter.java @@ -57,10 +57,6 @@ public abstract class JsonWriter extends Writer { } // ----------------------------------------------------------------------- - public abstract void writeTo(final char ch); // 只能是 0 - 127 的字符 - - public abstract void writeTo(final char[] cs, final int start, final int len); // 只能是 0 - 127 的字符 - public abstract void writeTo(final byte ch); // 只能是 0 - 127 的字符 public abstract void writeTo(final byte[] bs, final int start, final int len); // 只能是 0 - 127 的字符 @@ -252,18 +248,13 @@ public abstract class JsonWriter extends Writer { writeLatin1To(true, value); } - @Override // 只容许JsonBytesWriter重写此方法 + @Override // 只容许JsonCharsWriter重写此方法 public void writeField(EnMember member, String fieldName, Type fieldType, int fieldPos) { if (this.comma) { writeTo(BYTE_COMMA); } if (member != null) { - if (charsMode()) { - char[] chs = member.getJsonFieldNameChars(); - writeTo(chs, 0, chs.length); - } else { - writeTo(member.getJsonFieldNameBytes()); - } + writeTo(member.getJsonFieldNameBytes()); } else { writeLatin1To(true, fieldName); writeTo(BYTE_COLON); @@ -271,9 +262,6 @@ public abstract class JsonWriter extends Writer { } // ---------------------------------------------------------------------------------------------- - public final void writeTo(final char... cs) { // 只能是 0 - 127 的字符 - writeTo(cs, 0, cs.length); - } public final void writeTo(final byte[] bs) { // 只能是 0 - 127 的字符 writeTo(bs, 0, bs.length); diff --git a/src/test/java/org/redkale/test/convert/json/_DyncFortuneJsonEncoder.java b/src/test/java/org/redkale/test/convert/json/_DyncFortuneJsonEncoder.java index 3bca5d649..b0fecdca9 100644 --- a/src/test/java/org/redkale/test/convert/json/_DyncFortuneJsonEncoder.java +++ b/src/test/java/org/redkale/test/convert/json/_DyncFortuneJsonEncoder.java @@ -30,12 +30,12 @@ public class _DyncFortuneJsonEncoder extends JsonDynEncoder { objectEncoderSelf.convertTo(out, value); return; } - out.writeTo('{'); + out.writeTo((byte) '{'); if (out.charsMode()) { out.writeFieldIntValue(idFieldChars, false, value.getId()); } else { out.writeFieldIntValue(idFieldBytes, false, value.getId()); } - out.writeTo('}'); + out.writeTo((byte) '}'); } } diff --git a/src/test/java/org/redkale/test/convert/json/_DyncMessageJsonEncoder.java b/src/test/java/org/redkale/test/convert/json/_DyncMessageJsonEncoder.java index 4e1568a62..f1271701e 100644 --- a/src/test/java/org/redkale/test/convert/json/_DyncMessageJsonEncoder.java +++ b/src/test/java/org/redkale/test/convert/json/_DyncMessageJsonEncoder.java @@ -30,12 +30,12 @@ public class _DyncMessageJsonEncoder extends JsonDynEncoder { objectEncoderSelf.convertTo(out, value); return; } - out.writeTo('{'); + out.writeTo((byte) '{'); if (out.charsMode()) { out.writeFieldStandardStringValue(messageFieldChars, false, value.getMessage()); } else { out.writeFieldStandardStringValue(messageFieldBytes, false, value.getMessage()); } - out.writeTo('}'); + out.writeTo((byte) '}'); } } diff --git a/src/test/java/org/redkale/test/convert/json/_DyncUserJsonEncoder.java b/src/test/java/org/redkale/test/convert/json/_DyncUserJsonEncoder.java index 8fa4f99aa..490a102b0 100644 --- a/src/test/java/org/redkale/test/convert/json/_DyncUserJsonEncoder.java +++ b/src/test/java/org/redkale/test/convert/json/_DyncUserJsonEncoder.java @@ -44,7 +44,7 @@ public class _DyncUserJsonEncoder extends JsonDynEncoder { this.objectEncoderSelf.convertTo(out, value); return; } - out.writeTo('{'); + out.writeTo((byte) '{'); boolean comma = false; if (out.charsMode()) { comma = out.writeFieldIntValue(ageFieldChars, comma, value.getAge()); @@ -63,6 +63,6 @@ public class _DyncUserJsonEncoder extends JsonDynEncoder { comma = out.writeFieldStringValue(sexFieldBytes, comma, value.getSex()); out.writeFieldStringValue(nickNameFieldBytes, comma, value.getNickName()); } - out.writeTo('}'); + out.writeTo((byte) '}'); } } diff --git a/src/test/java/org/redkale/test/convert/json/_DyncWorldJsonEncoder.java b/src/test/java/org/redkale/test/convert/json/_DyncWorldJsonEncoder.java index 293e27ffb..0e3516e57 100644 --- a/src/test/java/org/redkale/test/convert/json/_DyncWorldJsonEncoder.java +++ b/src/test/java/org/redkale/test/convert/json/_DyncWorldJsonEncoder.java @@ -32,7 +32,7 @@ public class _DyncWorldJsonEncoder extends JsonDynEncoder { return; } - out.writeTo('{'); + out.writeTo((byte) '{'); boolean comma = false; if (out.charsMode()) { comma = out.writeFieldIntValue(idFieldChars, comma, value.getId()); @@ -41,6 +41,6 @@ public class _DyncWorldJsonEncoder extends JsonDynEncoder { comma = out.writeFieldIntValue(idFieldBytes, comma, value.getId()); out.writeFieldIntValue(randomNumberFieldBytes, comma, value.getRandomNumber()); } - out.writeTo('}'); + out.writeTo((byte) '}'); } }