json
This commit is contained in:
@@ -9,7 +9,6 @@ import java.nio.*;
|
|||||||
import java.nio.charset.Charset;
|
import java.nio.charset.Charset;
|
||||||
import java.util.Objects;
|
import java.util.Objects;
|
||||||
import java.util.function.Supplier;
|
import java.util.function.Supplier;
|
||||||
import org.redkale.convert.ConvertException;
|
|
||||||
import org.redkale.convert.Encodeable;
|
import org.redkale.convert.Encodeable;
|
||||||
import org.redkale.util.*;
|
import org.redkale.util.*;
|
||||||
|
|
||||||
@@ -113,20 +112,6 @@ public class JsonByteBufferWriter extends JsonWriter {
|
|||||||
return size;
|
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
|
@Override
|
||||||
public void writeTo(final byte ch) { // 只能是 0 - 127 的字符
|
public void writeTo(final byte ch) { // 只能是 0 - 127 的字符
|
||||||
expand(1);
|
expand(1);
|
||||||
|
|||||||
@@ -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
|
@Override
|
||||||
public void writeTo(final byte ch) { // 只能是 0 - 127 的字符
|
public void writeTo(final byte ch) { // 只能是 0 - 127 的字符
|
||||||
expand(1);
|
expand(1);
|
||||||
|
|||||||
@@ -4,7 +4,10 @@
|
|||||||
*/
|
*/
|
||||||
package org.redkale.convert.json;
|
package org.redkale.convert.json;
|
||||||
|
|
||||||
|
import java.lang.reflect.Type;
|
||||||
|
import org.redkale.convert.EnMember;
|
||||||
import org.redkale.convert.Encodeable;
|
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_COMMA;
|
||||||
import static org.redkale.convert.json.JsonWriter.BYTE_DQUOTE;
|
import static org.redkale.convert.json.JsonWriter.BYTE_DQUOTE;
|
||||||
import static org.redkale.convert.json.JsonWriter.DEFAULT_SIZE;
|
import static org.redkale.convert.json.JsonWriter.DEFAULT_SIZE;
|
||||||
@@ -87,13 +90,11 @@ public class JsonCharsWriter extends JsonWriter {
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
|
||||||
public void writeTo(final char ch) { // 只能是 0 - 127 的字符
|
public void writeTo(final char ch) { // 只能是 0 - 127 的字符
|
||||||
expand(1);
|
expand(1);
|
||||||
content[count++] = ch;
|
content[count++] = ch;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
|
||||||
public void writeTo(final char[] chs, final int start, final int len) { // 只能是 0 - 127 的字符
|
public void writeTo(final char[] chs, final int start, final int len) { // 只能是 0 - 127 的字符
|
||||||
expand(len);
|
expand(len);
|
||||||
System.arraycopy(chs, start, content, count, len);
|
System.arraycopy(chs, start, content, count, len);
|
||||||
@@ -115,6 +116,19 @@ public class JsonCharsWriter extends JsonWriter {
|
|||||||
count += len;
|
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);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* <b>注意:</b> 该String值不能为null且不会进行转义, 只用于不含需要转义字符的字符串,例如enum、double、BigInteger、BigDecimal转换的String
|
* <b>注意:</b> 该String值不能为null且不会进行转义, 只用于不含需要转义字符的字符串,例如enum、double、BigInteger、BigDecimal转换的String
|
||||||
*
|
*
|
||||||
@@ -305,6 +319,10 @@ public class JsonCharsWriter extends JsonWriter {
|
|||||||
return this.count;
|
return this.count;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public final void writeTo(final char... cs) { // 只能是 0 - 127 的字符
|
||||||
|
writeTo(cs, 0, cs.length);
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public final void writeNull() {
|
public final void writeNull() {
|
||||||
writeTo(CHARS_NULL);
|
writeTo(CHARS_NULL);
|
||||||
|
|||||||
@@ -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
|
@Override
|
||||||
public void writeTo(final byte[] bs, final int start, final int len) { // 只能是 0 - 127 的字符
|
public void writeTo(final byte[] bs, final int start, final int len) { // 只能是 0 - 127 的字符
|
||||||
try {
|
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) {
|
private void writeTo(final boolean quote, final char[] chs, final int start, final int len) {
|
||||||
try {
|
try {
|
||||||
if (quote) {
|
if (quote) {
|
||||||
|
|||||||
@@ -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 ch); // 只能是 0 - 127 的字符
|
||||||
|
|
||||||
public abstract void writeTo(final byte[] bs, final int start, final int len); // 只能是 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);
|
writeLatin1To(true, value);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override // 只容许JsonBytesWriter重写此方法
|
@Override // 只容许JsonCharsWriter重写此方法
|
||||||
public void writeField(EnMember member, String fieldName, Type fieldType, int fieldPos) {
|
public void writeField(EnMember member, String fieldName, Type fieldType, int fieldPos) {
|
||||||
if (this.comma) {
|
if (this.comma) {
|
||||||
writeTo(BYTE_COMMA);
|
writeTo(BYTE_COMMA);
|
||||||
}
|
}
|
||||||
if (member != null) {
|
if (member != null) {
|
||||||
if (charsMode()) {
|
writeTo(member.getJsonFieldNameBytes());
|
||||||
char[] chs = member.getJsonFieldNameChars();
|
|
||||||
writeTo(chs, 0, chs.length);
|
|
||||||
} else {
|
|
||||||
writeTo(member.getJsonFieldNameBytes());
|
|
||||||
}
|
|
||||||
} else {
|
} else {
|
||||||
writeLatin1To(true, fieldName);
|
writeLatin1To(true, fieldName);
|
||||||
writeTo(BYTE_COLON);
|
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 的字符
|
public final void writeTo(final byte[] bs) { // 只能是 0 - 127 的字符
|
||||||
writeTo(bs, 0, bs.length);
|
writeTo(bs, 0, bs.length);
|
||||||
|
|||||||
@@ -30,12 +30,12 @@ public class _DyncFortuneJsonEncoder extends JsonDynEncoder<Fortune> {
|
|||||||
objectEncoderSelf.convertTo(out, value);
|
objectEncoderSelf.convertTo(out, value);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
out.writeTo('{');
|
out.writeTo((byte) '{');
|
||||||
if (out.charsMode()) {
|
if (out.charsMode()) {
|
||||||
out.writeFieldIntValue(idFieldChars, false, value.getId());
|
out.writeFieldIntValue(idFieldChars, false, value.getId());
|
||||||
} else {
|
} else {
|
||||||
out.writeFieldIntValue(idFieldBytes, false, value.getId());
|
out.writeFieldIntValue(idFieldBytes, false, value.getId());
|
||||||
}
|
}
|
||||||
out.writeTo('}');
|
out.writeTo((byte) '}');
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -30,12 +30,12 @@ public class _DyncMessageJsonEncoder extends JsonDynEncoder<Message> {
|
|||||||
objectEncoderSelf.convertTo(out, value);
|
objectEncoderSelf.convertTo(out, value);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
out.writeTo('{');
|
out.writeTo((byte) '{');
|
||||||
if (out.charsMode()) {
|
if (out.charsMode()) {
|
||||||
out.writeFieldStandardStringValue(messageFieldChars, false, value.getMessage());
|
out.writeFieldStandardStringValue(messageFieldChars, false, value.getMessage());
|
||||||
} else {
|
} else {
|
||||||
out.writeFieldStandardStringValue(messageFieldBytes, false, value.getMessage());
|
out.writeFieldStandardStringValue(messageFieldBytes, false, value.getMessage());
|
||||||
}
|
}
|
||||||
out.writeTo('}');
|
out.writeTo((byte) '}');
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -44,7 +44,7 @@ public class _DyncUserJsonEncoder extends JsonDynEncoder<User> {
|
|||||||
this.objectEncoderSelf.convertTo(out, value);
|
this.objectEncoderSelf.convertTo(out, value);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
out.writeTo('{');
|
out.writeTo((byte) '{');
|
||||||
boolean comma = false;
|
boolean comma = false;
|
||||||
if (out.charsMode()) {
|
if (out.charsMode()) {
|
||||||
comma = out.writeFieldIntValue(ageFieldChars, comma, value.getAge());
|
comma = out.writeFieldIntValue(ageFieldChars, comma, value.getAge());
|
||||||
@@ -63,6 +63,6 @@ public class _DyncUserJsonEncoder extends JsonDynEncoder<User> {
|
|||||||
comma = out.writeFieldStringValue(sexFieldBytes, comma, value.getSex());
|
comma = out.writeFieldStringValue(sexFieldBytes, comma, value.getSex());
|
||||||
out.writeFieldStringValue(nickNameFieldBytes, comma, value.getNickName());
|
out.writeFieldStringValue(nickNameFieldBytes, comma, value.getNickName());
|
||||||
}
|
}
|
||||||
out.writeTo('}');
|
out.writeTo((byte) '}');
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -32,7 +32,7 @@ public class _DyncWorldJsonEncoder extends JsonDynEncoder<World> {
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
out.writeTo('{');
|
out.writeTo((byte) '{');
|
||||||
boolean comma = false;
|
boolean comma = false;
|
||||||
if (out.charsMode()) {
|
if (out.charsMode()) {
|
||||||
comma = out.writeFieldIntValue(idFieldChars, comma, value.getId());
|
comma = out.writeFieldIntValue(idFieldChars, comma, value.getId());
|
||||||
@@ -41,6 +41,6 @@ public class _DyncWorldJsonEncoder extends JsonDynEncoder<World> {
|
|||||||
comma = out.writeFieldIntValue(idFieldBytes, comma, value.getId());
|
comma = out.writeFieldIntValue(idFieldBytes, comma, value.getId());
|
||||||
out.writeFieldIntValue(randomNumberFieldBytes, comma, value.getRandomNumber());
|
out.writeFieldIntValue(randomNumberFieldBytes, comma, value.getRandomNumber());
|
||||||
}
|
}
|
||||||
out.writeTo('}');
|
out.writeTo((byte) '}');
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user