json
This commit is contained in:
@@ -360,37 +360,36 @@ public class JsonByteBufferWriter extends JsonWriter {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean writeFieldBooleanValue(byte[] fieldBytes, char[] fieldChars, boolean comma, boolean value) {
|
public boolean writeFieldBooleanValue(Object fieldArray, boolean comma, boolean value) {
|
||||||
return writeFieldLatin1Value(fieldBytes, fieldChars, comma, false, String.valueOf(value));
|
return writeFieldLatin1Value(fieldArray, comma, false, String.valueOf(value));
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean writeFieldByteValue(byte[] fieldBytes, char[] fieldChars, boolean comma, byte value) {
|
public boolean writeFieldByteValue(Object fieldArray, boolean comma, byte value) {
|
||||||
return writeFieldLatin1Value(fieldBytes, fieldChars, comma, false, String.valueOf(value));
|
return writeFieldLatin1Value(fieldArray, comma, false, String.valueOf(value));
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean writeFieldShortValue(byte[] fieldBytes, char[] fieldChars, boolean comma, short value) {
|
public boolean writeFieldShortValue(Object fieldArray, boolean comma, short value) {
|
||||||
return writeFieldLatin1Value(fieldBytes, fieldChars, comma, false, String.valueOf(value));
|
return writeFieldLatin1Value(fieldArray, comma, false, String.valueOf(value));
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean writeFieldIntValue(byte[] fieldBytes, char[] fieldChars, boolean comma, int value) {
|
public boolean writeFieldIntValue(Object fieldArray, boolean comma, int value) {
|
||||||
return writeFieldLatin1Value(fieldBytes, fieldChars, comma, false, String.valueOf(value));
|
return writeFieldLatin1Value(fieldArray, comma, false, String.valueOf(value));
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean writeFieldLongValue(byte[] fieldBytes, char[] fieldChars, boolean comma, long value) {
|
public boolean writeFieldLongValue(Object fieldArray, boolean comma, long value) {
|
||||||
return writeFieldLatin1Value(fieldBytes, fieldChars, comma, false, String.valueOf(value));
|
return writeFieldLatin1Value(fieldArray, comma, false, String.valueOf(value));
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean writeFieldObjectValue(
|
public boolean writeFieldObjectValue(Object fieldArray, boolean comma, Encodeable encodeable, Object value) {
|
||||||
byte[] fieldBytes, char[] fieldChars, boolean comma, Encodeable encodeable, Object value) {
|
|
||||||
if (value == null && !nullable()) {
|
if (value == null && !nullable()) {
|
||||||
return comma;
|
return comma;
|
||||||
}
|
}
|
||||||
byte[] bs1 = fieldBytes;
|
byte[] bs1 = (byte[]) fieldArray;
|
||||||
int expandsize = expand(1 + bs1.length);
|
int expandsize = expand(1 + bs1.length);
|
||||||
if (expandsize == 0) { // 只需要一个buffer
|
if (expandsize == 0) { // 只需要一个buffer
|
||||||
final ByteBuffer buffer = this.buffers[currBufIndex];
|
final ByteBuffer buffer = this.buffers[currBufIndex];
|
||||||
@@ -411,11 +410,11 @@ public class JsonByteBufferWriter extends JsonWriter {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean writeFieldStringValue(byte[] fieldBytes, char[] fieldChars, boolean comma, String value) {
|
public boolean writeFieldStringValue(Object fieldArray, boolean comma, String value) {
|
||||||
if (value == null || (tiny() && value.isEmpty())) {
|
if (value == null || (tiny() && value.isEmpty())) {
|
||||||
return comma;
|
return comma;
|
||||||
}
|
}
|
||||||
byte[] bs1 = fieldBytes;
|
byte[] bs1 = (byte[]) fieldArray;
|
||||||
int expandsize = expand(1 + bs1.length);
|
int expandsize = expand(1 + bs1.length);
|
||||||
if (expandsize == 0) { // 只需要一个buffer
|
if (expandsize == 0) { // 只需要一个buffer
|
||||||
final ByteBuffer buffer = this.buffers[currBufIndex];
|
final ByteBuffer buffer = this.buffers[currBufIndex];
|
||||||
@@ -436,12 +435,11 @@ public class JsonByteBufferWriter extends JsonWriter {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected boolean writeFieldLatin1Value(
|
protected boolean writeFieldLatin1Value(Object fieldArray, boolean comma, boolean quote, String value) {
|
||||||
byte[] fieldBytes, char[] fieldChars, boolean comma, boolean quote, String value) {
|
|
||||||
if (value == null || (tiny() && value.isEmpty())) {
|
if (value == null || (tiny() && value.isEmpty())) {
|
||||||
return comma;
|
return comma;
|
||||||
}
|
}
|
||||||
byte[] bs1 = fieldBytes;
|
byte[] bs1 = (byte[]) fieldArray;
|
||||||
byte[] bs2 = Utility.latin1ByteArray(value);
|
byte[] bs2 = Utility.latin1ByteArray(value);
|
||||||
int expandsize = expand(bs1.length + bs2.length + 3);
|
int expandsize = expand(bs1.length + bs2.length + 3);
|
||||||
if (expandsize == 0) { // 只需要一个buffer
|
if (expandsize == 0) { // 只需要一个buffer
|
||||||
|
|||||||
@@ -186,8 +186,8 @@ public class JsonBytesWriter extends JsonWriter implements ByteTuple {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean writeFieldBooleanValue(byte[] fieldBytes, char[] fieldChars, boolean comma, boolean value) {
|
public boolean writeFieldBooleanValue(Object fieldArray, boolean comma, boolean value) {
|
||||||
byte[] bs1 = fieldBytes;
|
byte[] bs1 = (byte[]) fieldArray;
|
||||||
byte[] bs2 = value ? BYTES_TUREVALUE : BYTES_FALSEVALUE;
|
byte[] bs2 = value ? BYTES_TUREVALUE : BYTES_FALSEVALUE;
|
||||||
int len1 = bs1.length;
|
int len1 = bs1.length;
|
||||||
int len2 = bs2.length;
|
int len2 = bs2.length;
|
||||||
@@ -201,8 +201,8 @@ public class JsonBytesWriter extends JsonWriter implements ByteTuple {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean writeFieldByteValue(byte[] fieldBytes, char[] fieldChars, boolean comma, byte value) {
|
public boolean writeFieldByteValue(Object fieldArray, boolean comma, byte value) {
|
||||||
byte[] bs1 = fieldBytes;
|
byte[] bs1 = (byte[]) fieldArray;
|
||||||
byte[] bs2 = value >= 0 ? TENTHOUSAND_BYTES[value] : TENTHOUSAND_BYTES2[-value];
|
byte[] bs2 = value >= 0 ? TENTHOUSAND_BYTES[value] : TENTHOUSAND_BYTES2[-value];
|
||||||
int len1 = bs1.length;
|
int len1 = bs1.length;
|
||||||
int len2 = bs2.length;
|
int len2 = bs2.length;
|
||||||
@@ -216,8 +216,8 @@ public class JsonBytesWriter extends JsonWriter implements ByteTuple {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean writeFieldShortValue(byte[] fieldBytes, char[] fieldChars, boolean comma, short value) {
|
public boolean writeFieldShortValue(Object fieldArray, boolean comma, short value) {
|
||||||
byte[] bs1 = fieldBytes;
|
byte[] bs1 = (byte[]) fieldArray;
|
||||||
byte[] bs2 = value >= 0 ? TENTHOUSAND_BYTES[value] : TENTHOUSAND_BYTES2[-value];
|
byte[] bs2 = value >= 0 ? TENTHOUSAND_BYTES[value] : TENTHOUSAND_BYTES2[-value];
|
||||||
int len1 = bs1.length;
|
int len1 = bs1.length;
|
||||||
int len2 = bs2.length;
|
int len2 = bs2.length;
|
||||||
@@ -231,8 +231,8 @@ public class JsonBytesWriter extends JsonWriter implements ByteTuple {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean writeFieldIntValue(byte[] fieldBytes, char[] fieldChars, boolean comma, int value) {
|
public boolean writeFieldIntValue(Object fieldArray, boolean comma, int value) {
|
||||||
byte[] bs1 = fieldBytes;
|
byte[] bs1 = (byte[]) fieldArray;
|
||||||
int len1 = bs1.length;
|
int len1 = bs1.length;
|
||||||
byte[] src = expand(len1 + 12);
|
byte[] src = expand(len1 + 12);
|
||||||
if (comma) src[count++] = BYTE_COMMA;
|
if (comma) src[count++] = BYTE_COMMA;
|
||||||
@@ -243,8 +243,8 @@ public class JsonBytesWriter extends JsonWriter implements ByteTuple {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean writeFieldLongValue(byte[] fieldBytes, char[] fieldChars, boolean comma, long value) {
|
public boolean writeFieldLongValue(Object fieldArray, boolean comma, long value) {
|
||||||
byte[] bs1 = fieldBytes;
|
byte[] bs1 = (byte[]) fieldArray;
|
||||||
int len1 = bs1.length;
|
int len1 = bs1.length;
|
||||||
byte[] src = expand(len1 + 21);
|
byte[] src = expand(len1 + 21);
|
||||||
if (comma) src[count++] = BYTE_COMMA;
|
if (comma) src[count++] = BYTE_COMMA;
|
||||||
@@ -255,12 +255,11 @@ public class JsonBytesWriter extends JsonWriter implements ByteTuple {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean writeFieldObjectValue(
|
public boolean writeFieldObjectValue(Object fieldArray, boolean comma, Encodeable encodeable, Object value) {
|
||||||
byte[] fieldBytes, char[] fieldChars, boolean comma, Encodeable encodeable, Object value) {
|
|
||||||
if (value == null && !nullable()) {
|
if (value == null && !nullable()) {
|
||||||
return comma;
|
return comma;
|
||||||
}
|
}
|
||||||
byte[] bs1 = fieldBytes;
|
byte[] bs1 = (byte[]) fieldArray;
|
||||||
int len1 = bs1.length;
|
int len1 = bs1.length;
|
||||||
byte[] src = expand(1 + len1);
|
byte[] src = expand(1 + len1);
|
||||||
if (comma) src[count++] = BYTE_COMMA;
|
if (comma) src[count++] = BYTE_COMMA;
|
||||||
@@ -271,11 +270,11 @@ public class JsonBytesWriter extends JsonWriter implements ByteTuple {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean writeFieldStringValue(byte[] fieldBytes, char[] fieldChars, boolean comma, String value) {
|
public boolean writeFieldStringValue(Object fieldArray, boolean comma, String value) {
|
||||||
if (value == null || (tiny() && value.isEmpty())) {
|
if (value == null || (tiny() && value.isEmpty())) {
|
||||||
return comma;
|
return comma;
|
||||||
}
|
}
|
||||||
byte[] bs1 = fieldBytes;
|
byte[] bs1 = (byte[]) fieldArray;
|
||||||
int len1 = bs1.length;
|
int len1 = bs1.length;
|
||||||
byte[] src = expand(1 + len1);
|
byte[] src = expand(1 + len1);
|
||||||
if (comma) src[count++] = BYTE_COMMA;
|
if (comma) src[count++] = BYTE_COMMA;
|
||||||
@@ -286,12 +285,11 @@ public class JsonBytesWriter extends JsonWriter implements ByteTuple {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected boolean writeFieldLatin1Value(
|
protected boolean writeFieldLatin1Value(Object fieldArray, boolean comma, boolean quote, String value) {
|
||||||
byte[] fieldBytes, char[] fieldChars, boolean comma, boolean quote, String value) {
|
|
||||||
if (value == null || (tiny() && value.isEmpty())) {
|
if (value == null || (tiny() && value.isEmpty())) {
|
||||||
return comma;
|
return comma;
|
||||||
}
|
}
|
||||||
byte[] bs1 = fieldBytes;
|
byte[] bs1 = (byte[]) fieldArray;
|
||||||
byte[] bs2 = Utility.latin1ByteArray(value);
|
byte[] bs2 = Utility.latin1ByteArray(value);
|
||||||
int len1 = bs1.length;
|
int len1 = bs1.length;
|
||||||
int len2 = bs2.length;
|
int len2 = bs2.length;
|
||||||
|
|||||||
@@ -141,8 +141,8 @@ public class JsonCharsWriter extends JsonWriter {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean writeFieldBooleanValue(byte[] fieldBytes, char[] fieldChars, boolean comma, boolean value) {
|
public boolean writeFieldBooleanValue(Object fieldArray, boolean comma, boolean value) {
|
||||||
char[] bs1 = fieldChars;
|
char[] bs1 = (char[]) fieldArray;
|
||||||
char[] bs2 = value ? CHARS_TUREVALUE : CHARS_FALSEVALUE;
|
char[] bs2 = value ? CHARS_TUREVALUE : CHARS_FALSEVALUE;
|
||||||
int len1 = bs1.length;
|
int len1 = bs1.length;
|
||||||
int len2 = bs2.length;
|
int len2 = bs2.length;
|
||||||
@@ -156,8 +156,8 @@ public class JsonCharsWriter extends JsonWriter {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean writeFieldShortValue(byte[] fieldBytes, char[] fieldChars, boolean comma, short value) {
|
public boolean writeFieldShortValue(Object fieldArray, boolean comma, short value) {
|
||||||
char[] bs1 = fieldChars;
|
char[] bs1 = (char[]) fieldArray;
|
||||||
char[] bs2 = value >= 0 ? TENTHOUSAND_CHARS[value] : TENTHOUSAND_CHARS2[-value];
|
char[] bs2 = value >= 0 ? TENTHOUSAND_CHARS[value] : TENTHOUSAND_CHARS2[-value];
|
||||||
int len1 = bs1.length;
|
int len1 = bs1.length;
|
||||||
int len2 = bs2.length;
|
int len2 = bs2.length;
|
||||||
@@ -171,8 +171,8 @@ public class JsonCharsWriter extends JsonWriter {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean writeFieldByteValue(byte[] fieldBytes, char[] fieldChars, boolean comma, byte value) {
|
public boolean writeFieldByteValue(Object fieldArray, boolean comma, byte value) {
|
||||||
char[] bs1 = fieldChars;
|
char[] bs1 = (char[]) fieldArray;
|
||||||
char[] bs2 = value >= 0 ? TENTHOUSAND_CHARS[value] : TENTHOUSAND_CHARS2[-value];
|
char[] bs2 = value >= 0 ? TENTHOUSAND_CHARS[value] : TENTHOUSAND_CHARS2[-value];
|
||||||
int len1 = bs1.length;
|
int len1 = bs1.length;
|
||||||
int len2 = bs2.length;
|
int len2 = bs2.length;
|
||||||
@@ -186,8 +186,8 @@ public class JsonCharsWriter extends JsonWriter {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean writeFieldIntValue(byte[] fieldBytes, char[] fieldChars, boolean comma, int value) {
|
public boolean writeFieldIntValue(Object fieldArray, boolean comma, int value) {
|
||||||
char[] bs1 = fieldChars;
|
char[] bs1 = (char[]) fieldArray;
|
||||||
int len1 = bs1.length;
|
int len1 = bs1.length;
|
||||||
char[] src = expand(bs1.length + 12);
|
char[] src = expand(bs1.length + 12);
|
||||||
if (comma) src[count++] = BYTE_COMMA;
|
if (comma) src[count++] = BYTE_COMMA;
|
||||||
@@ -198,8 +198,8 @@ public class JsonCharsWriter extends JsonWriter {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean writeFieldLongValue(byte[] fieldBytes, char[] fieldChars, boolean comma, long value) {
|
public boolean writeFieldLongValue(Object fieldArray, boolean comma, long value) {
|
||||||
char[] bs1 = fieldChars;
|
char[] bs1 = (char[]) fieldArray;
|
||||||
int len1 = bs1.length;
|
int len1 = bs1.length;
|
||||||
char[] src = expand(len1 + 21);
|
char[] src = expand(len1 + 21);
|
||||||
if (comma) src[count++] = BYTE_COMMA;
|
if (comma) src[count++] = BYTE_COMMA;
|
||||||
@@ -210,12 +210,11 @@ public class JsonCharsWriter extends JsonWriter {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean writeFieldObjectValue(
|
public boolean writeFieldObjectValue(Object fieldArray, boolean comma, Encodeable encodeable, Object value) {
|
||||||
byte[] fieldBytes, char[] fieldChars, boolean comma, Encodeable encodeable, Object value) {
|
|
||||||
if (value == null && !nullable()) {
|
if (value == null && !nullable()) {
|
||||||
return comma;
|
return comma;
|
||||||
}
|
}
|
||||||
char[] bs1 = fieldChars;
|
char[] bs1 = (char[]) fieldArray;
|
||||||
int len1 = bs1.length;
|
int len1 = bs1.length;
|
||||||
char[] src = expand(1 + len1);
|
char[] src = expand(1 + len1);
|
||||||
if (comma) src[count++] = BYTE_COMMA;
|
if (comma) src[count++] = BYTE_COMMA;
|
||||||
@@ -226,11 +225,11 @@ public class JsonCharsWriter extends JsonWriter {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean writeFieldStringValue(byte[] fieldBytes, char[] fieldChars, boolean comma, String value) {
|
public boolean writeFieldStringValue(Object fieldArray, boolean comma, String value) {
|
||||||
if (value == null || (tiny() && value.isEmpty())) {
|
if (value == null || (tiny() && value.isEmpty())) {
|
||||||
return comma;
|
return comma;
|
||||||
}
|
}
|
||||||
char[] bs1 = fieldChars;
|
char[] bs1 = (char[]) fieldArray;
|
||||||
int len1 = bs1.length;
|
int len1 = bs1.length;
|
||||||
char[] src = expand(1 + len1);
|
char[] src = expand(1 + len1);
|
||||||
if (comma) src[count++] = BYTE_COMMA;
|
if (comma) src[count++] = BYTE_COMMA;
|
||||||
@@ -241,12 +240,11 @@ public class JsonCharsWriter extends JsonWriter {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected boolean writeFieldLatin1Value(
|
protected boolean writeFieldLatin1Value(Object fieldArray, boolean comma, boolean quote, String value) {
|
||||||
byte[] fieldBytes, char[] fieldChars, boolean comma, boolean quote, String value) {
|
|
||||||
if (value == null || (tiny() && value.isEmpty())) {
|
if (value == null || (tiny() && value.isEmpty())) {
|
||||||
return comma;
|
return comma;
|
||||||
}
|
}
|
||||||
char[] bs1 = fieldChars;
|
char[] bs1 = (char[]) fieldArray;
|
||||||
int len1 = bs1.length;
|
int len1 = bs1.length;
|
||||||
int len2 = value.length();
|
int len2 = value.length();
|
||||||
|
|
||||||
|
|||||||
@@ -111,7 +111,6 @@ public abstract class JsonDynEncoder<T> extends ObjectEncoder<JsonWriter, T> {
|
|||||||
final String jsonwriterDesc = org.redkale.asm.Type.getDescriptor(JsonWriter.class);
|
final String jsonwriterDesc = org.redkale.asm.Type.getDescriptor(JsonWriter.class);
|
||||||
final String encodeableDesc = org.redkale.asm.Type.getDescriptor(Encodeable.class);
|
final String encodeableDesc = org.redkale.asm.Type.getDescriptor(Encodeable.class);
|
||||||
final String objEncoderDesc = org.redkale.asm.Type.getDescriptor(ObjectEncoder.class);
|
final String objEncoderDesc = org.redkale.asm.Type.getDescriptor(ObjectEncoder.class);
|
||||||
final String objectDesc = org.redkale.asm.Type.getDescriptor(Object.class);
|
|
||||||
final String valtypeDesc = org.redkale.asm.Type.getDescriptor(clazz);
|
final String valtypeDesc = org.redkale.asm.Type.getDescriptor(clazz);
|
||||||
// ------------------------------------------------------------------------------
|
// ------------------------------------------------------------------------------
|
||||||
ClassWriter cw = new ClassWriter(COMPUTE_FRAMES);
|
ClassWriter cw = new ClassWriter(COMPUTE_FRAMES);
|
||||||
@@ -215,7 +214,6 @@ public abstract class JsonDynEncoder<T> extends ObjectEncoder<JsonWriter, T> {
|
|||||||
mv.visitFrame(Opcodes.F_SAME, 0, null, 0, null);
|
mv.visitFrame(Opcodes.F_SAME, 0, null, 0, null);
|
||||||
}
|
}
|
||||||
|
|
||||||
int elementIndex = -1;
|
|
||||||
{
|
{
|
||||||
{ // out.writeTo('{');
|
{ // out.writeTo('{');
|
||||||
mv.visitVarInsn(ALOAD, 1);
|
mv.visitVarInsn(ALOAD, 1);
|
||||||
@@ -233,122 +231,23 @@ public abstract class JsonDynEncoder<T> extends ObjectEncoder<JsonWriter, T> {
|
|||||||
commaLabel = new Label();
|
commaLabel = new Label();
|
||||||
mv.visitLabel(commaLabel);
|
mv.visitLabel(commaLabel);
|
||||||
}
|
}
|
||||||
// comma = out.writeFieldIntValue(ageFieldBytes, ageFieldChars, comma, value.getAge());
|
|
||||||
for (AccessibleObject element : elements) {
|
// if (out.charsMode()) {
|
||||||
elementIndex++;
|
mv.visitVarInsn(ALOAD, 1);
|
||||||
final String fieldName = factory.readConvertFieldName(clazz, element);
|
mv.visitMethodInsn(INVOKEVIRTUAL, writerName, "charsMode", "()Z", false);
|
||||||
final Class fieldType = readGetSetFieldType(element);
|
Label charIf = new Label();
|
||||||
mv.visitVarInsn(ALOAD, 1); // JsonWriter
|
mv.visitJumpInsn(IFEQ, charIf);
|
||||||
mv.visitVarInsn(ALOAD, 0); // this.xxxFieldBytes 第一个参数
|
// comma = out.writeFieldIntValue(fieldArray, comma, value.getAge());
|
||||||
mv.visitFieldInsn(GETFIELD, newDynName, fieldName + "FieldBytes", "[B");
|
dynConvertToMethod(clazz, newDynName, mv, factory, mixedNames, elements, commaLabel, true);
|
||||||
mv.visitVarInsn(ALOAD, 0); // this.xxxFieldChars 第二个参数
|
Label byteIf = new Label();
|
||||||
mv.visitFieldInsn(GETFIELD, newDynName, fieldName + "FieldChars", "[C");
|
mv.visitJumpInsn(GOTO, byteIf);
|
||||||
if (commaLabel != null) {
|
mv.visitLabel(charIf);
|
||||||
mv.visitVarInsn(ILOAD, 3); // comma 第三个参数
|
mv.visitFrame(Opcodes.F_APPEND, 1, new Object[] {Opcodes.INTEGER}, 0, null);
|
||||||
} else {
|
// comma = out.writeFieldIntValue(fieldArray, comma, value.getAge());
|
||||||
mv.visitInsn(elementIndex == 0 ? ICONST_0 : ICONST_1); // comma=false 第三个参数
|
dynConvertToMethod(clazz, newDynName, mv, factory, mixedNames, elements, commaLabel, false);
|
||||||
}
|
mv.visitLabel(byteIf);
|
||||||
if (mixedNames.containsKey(fieldName)) { // Encodeable 第四个参数
|
mv.visitFrame(Opcodes.F_SAME, 0, null, 0, null);
|
||||||
mv.visitVarInsn(ALOAD, 0);
|
|
||||||
mv.visitFieldInsn(GETFIELD, newDynName, fieldName + "Encoder", encodeableDesc);
|
|
||||||
}
|
|
||||||
mv.visitVarInsn(ALOAD, 2); // value.getXXX() 第四/五个参数
|
|
||||||
if (element instanceof Field) {
|
|
||||||
mv.visitFieldInsn(
|
|
||||||
GETFIELD,
|
|
||||||
valtypeName,
|
|
||||||
((Field) element).getName(),
|
|
||||||
org.redkale.asm.Type.getDescriptor(fieldType));
|
|
||||||
} else {
|
|
||||||
mv.visitMethodInsn(
|
|
||||||
((Method) element).getDeclaringClass().isInterface() ? INVOKEINTERFACE : INVOKEVIRTUAL,
|
|
||||||
valtypeName,
|
|
||||||
((Method) element).getName(),
|
|
||||||
"()" + org.redkale.asm.Type.getDescriptor(fieldType),
|
|
||||||
false);
|
|
||||||
}
|
|
||||||
if (fieldType == boolean.class || fieldType == Boolean.class) {
|
|
||||||
mv.visitMethodInsn(
|
|
||||||
INVOKEVIRTUAL,
|
|
||||||
writerName,
|
|
||||||
"writeFieldBooleanValue",
|
|
||||||
"([B[CZ" + org.redkale.asm.Type.getDescriptor(fieldType) + ")Z",
|
|
||||||
false);
|
|
||||||
} else if (fieldType == byte.class || fieldType == Byte.class) {
|
|
||||||
mv.visitMethodInsn(
|
|
||||||
INVOKEVIRTUAL,
|
|
||||||
writerName,
|
|
||||||
"writeFieldByteValue",
|
|
||||||
"([B[CZ" + org.redkale.asm.Type.getDescriptor(fieldType) + ")Z",
|
|
||||||
false);
|
|
||||||
} else if (fieldType == short.class || fieldType == Short.class) {
|
|
||||||
mv.visitMethodInsn(
|
|
||||||
INVOKEVIRTUAL,
|
|
||||||
writerName,
|
|
||||||
"writeFieldShortValue",
|
|
||||||
"([B[CZ" + org.redkale.asm.Type.getDescriptor(fieldType) + ")Z",
|
|
||||||
false);
|
|
||||||
} else if (fieldType == char.class || fieldType == Character.class) {
|
|
||||||
mv.visitMethodInsn(
|
|
||||||
INVOKEVIRTUAL,
|
|
||||||
writerName,
|
|
||||||
"writeFieldCharValue",
|
|
||||||
"([B[CZ" + org.redkale.asm.Type.getDescriptor(fieldType) + ")Z",
|
|
||||||
false);
|
|
||||||
} else if (fieldType == int.class || fieldType == Integer.class) {
|
|
||||||
mv.visitMethodInsn(
|
|
||||||
INVOKEVIRTUAL,
|
|
||||||
writerName,
|
|
||||||
"writeFieldIntValue",
|
|
||||||
"([B[CZ" + org.redkale.asm.Type.getDescriptor(fieldType) + ")Z",
|
|
||||||
false);
|
|
||||||
} else if (fieldType == float.class || fieldType == Float.class) {
|
|
||||||
mv.visitMethodInsn(
|
|
||||||
INVOKEVIRTUAL,
|
|
||||||
writerName,
|
|
||||||
"writeFieldFloatValue",
|
|
||||||
"([B[CZ" + org.redkale.asm.Type.getDescriptor(fieldType) + ")Z",
|
|
||||||
false);
|
|
||||||
} else if (fieldType == long.class || fieldType == Long.class) {
|
|
||||||
mv.visitMethodInsn(
|
|
||||||
INVOKEVIRTUAL,
|
|
||||||
writerName,
|
|
||||||
"writeFieldLongValue",
|
|
||||||
"([B[CZ" + org.redkale.asm.Type.getDescriptor(fieldType) + ")Z",
|
|
||||||
false);
|
|
||||||
} else if (fieldType == double.class || fieldType == Double.class) {
|
|
||||||
mv.visitMethodInsn(
|
|
||||||
INVOKEVIRTUAL,
|
|
||||||
writerName,
|
|
||||||
"writeFieldDoubleValue",
|
|
||||||
"([B[CZ" + org.redkale.asm.Type.getDescriptor(fieldType) + ")Z",
|
|
||||||
false);
|
|
||||||
} else if (fieldType == String.class) {
|
|
||||||
String writeFieldName = "writeFieldStringValue";
|
|
||||||
if (isConvertStandardString(factory, element)) {
|
|
||||||
writeFieldName = "writeFieldStandardStringValue";
|
|
||||||
}
|
|
||||||
mv.visitMethodInsn(
|
|
||||||
INVOKEVIRTUAL,
|
|
||||||
writerName,
|
|
||||||
writeFieldName,
|
|
||||||
"([B[CZ" + org.redkale.asm.Type.getDescriptor(fieldType) + ")Z",
|
|
||||||
false);
|
|
||||||
} else {
|
|
||||||
// writeFieldObjectValue(fieldBytes, fieldChars, comma, encodeable, value)
|
|
||||||
mv.visitMethodInsn(
|
|
||||||
INVOKEVIRTUAL,
|
|
||||||
writerName,
|
|
||||||
"writeFieldObjectValue",
|
|
||||||
"([B[CZ" + encodeableDesc + objectDesc + ")Z",
|
|
||||||
false);
|
|
||||||
}
|
|
||||||
if (commaLabel != null && elementIndex + 1 < elements.size()) {
|
|
||||||
mv.visitVarInsn(ISTORE, 3); // comma = out.writeFieldXXXValue()
|
|
||||||
} else {
|
|
||||||
mv.visitInsn(POP);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
{ // out.writeTo('}');
|
{ // out.writeTo('}');
|
||||||
mv.visitVarInsn(ALOAD, 1);
|
mv.visitVarInsn(ALOAD, 1);
|
||||||
mv.visitIntInsn(BIPUSH, '}');
|
mv.visitIntInsn(BIPUSH, '}');
|
||||||
@@ -576,6 +475,139 @@ public abstract class JsonDynEncoder<T> extends ObjectEncoder<JsonWriter, T> {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private static void dynConvertToMethod(
|
||||||
|
final Class clazz,
|
||||||
|
final String newDynName,
|
||||||
|
final MethodVisitor mv,
|
||||||
|
final JsonFactory factory,
|
||||||
|
final Map<String, AccessibleObject> mixedNames,
|
||||||
|
final List<AccessibleObject> elements,
|
||||||
|
final Label commaLabel,
|
||||||
|
final boolean charMode) {
|
||||||
|
final String valtypeName = clazz.getName().replace('.', '/');
|
||||||
|
final String writerName = JsonWriter.class.getName().replace('.', '/');
|
||||||
|
final String encodeableDesc = org.redkale.asm.Type.getDescriptor(Encodeable.class);
|
||||||
|
final String objectDesc = org.redkale.asm.Type.getDescriptor(Object.class);
|
||||||
|
int elementIndex = -1;
|
||||||
|
for (AccessibleObject element : elements) {
|
||||||
|
elementIndex++;
|
||||||
|
final String fieldName = factory.readConvertFieldName(clazz, element);
|
||||||
|
final Class fieldType = readGetSetFieldType(element);
|
||||||
|
mv.visitVarInsn(ALOAD, 1); // JsonWriter
|
||||||
|
mv.visitVarInsn(ALOAD, 0); // this.xxxFieldBytes 第一个参数
|
||||||
|
if (charMode) {
|
||||||
|
mv.visitFieldInsn(GETFIELD, newDynName, fieldName + "FieldChars", "[C");
|
||||||
|
} else {
|
||||||
|
mv.visitFieldInsn(GETFIELD, newDynName, fieldName + "FieldBytes", "[B");
|
||||||
|
}
|
||||||
|
if (commaLabel != null) {
|
||||||
|
mv.visitVarInsn(ILOAD, 3); // comma 第三个参数
|
||||||
|
} else {
|
||||||
|
mv.visitInsn(elementIndex == 0 ? ICONST_0 : ICONST_1); // comma=false 第二个参数
|
||||||
|
}
|
||||||
|
if (mixedNames.containsKey(fieldName)) { // Encodeable 第三个参数
|
||||||
|
mv.visitVarInsn(ALOAD, 0);
|
||||||
|
mv.visitFieldInsn(GETFIELD, newDynName, fieldName + "Encoder", encodeableDesc);
|
||||||
|
}
|
||||||
|
mv.visitVarInsn(ALOAD, 2); // value.getXXX() 第三/四个参数
|
||||||
|
if (element instanceof Field) {
|
||||||
|
mv.visitFieldInsn(
|
||||||
|
GETFIELD,
|
||||||
|
valtypeName,
|
||||||
|
((Field) element).getName(),
|
||||||
|
org.redkale.asm.Type.getDescriptor(fieldType));
|
||||||
|
} else {
|
||||||
|
mv.visitMethodInsn(
|
||||||
|
((Method) element).getDeclaringClass().isInterface() ? INVOKEINTERFACE : INVOKEVIRTUAL,
|
||||||
|
valtypeName,
|
||||||
|
((Method) element).getName(),
|
||||||
|
"()" + org.redkale.asm.Type.getDescriptor(fieldType),
|
||||||
|
false);
|
||||||
|
}
|
||||||
|
if (fieldType == boolean.class || fieldType == Boolean.class) {
|
||||||
|
mv.visitMethodInsn(
|
||||||
|
INVOKEVIRTUAL,
|
||||||
|
writerName,
|
||||||
|
"writeFieldBooleanValue",
|
||||||
|
"(" + objectDesc + "Z" + org.redkale.asm.Type.getDescriptor(fieldType) + ")Z",
|
||||||
|
false);
|
||||||
|
} else if (fieldType == byte.class || fieldType == Byte.class) {
|
||||||
|
mv.visitMethodInsn(
|
||||||
|
INVOKEVIRTUAL,
|
||||||
|
writerName,
|
||||||
|
"writeFieldByteValue",
|
||||||
|
"(" + objectDesc + "Z" + org.redkale.asm.Type.getDescriptor(fieldType) + ")Z",
|
||||||
|
false);
|
||||||
|
} else if (fieldType == short.class || fieldType == Short.class) {
|
||||||
|
mv.visitMethodInsn(
|
||||||
|
INVOKEVIRTUAL,
|
||||||
|
writerName,
|
||||||
|
"writeFieldShortValue",
|
||||||
|
"(" + objectDesc + "Z" + org.redkale.asm.Type.getDescriptor(fieldType) + ")Z",
|
||||||
|
false);
|
||||||
|
} else if (fieldType == char.class || fieldType == Character.class) {
|
||||||
|
mv.visitMethodInsn(
|
||||||
|
INVOKEVIRTUAL,
|
||||||
|
writerName,
|
||||||
|
"writeFieldCharValue",
|
||||||
|
"(" + objectDesc + "Z" + org.redkale.asm.Type.getDescriptor(fieldType) + ")Z",
|
||||||
|
false);
|
||||||
|
} else if (fieldType == int.class || fieldType == Integer.class) {
|
||||||
|
mv.visitMethodInsn(
|
||||||
|
INVOKEVIRTUAL,
|
||||||
|
writerName,
|
||||||
|
"writeFieldIntValue",
|
||||||
|
"(" + objectDesc + "Z" + org.redkale.asm.Type.getDescriptor(fieldType) + ")Z",
|
||||||
|
false);
|
||||||
|
} else if (fieldType == float.class || fieldType == Float.class) {
|
||||||
|
mv.visitMethodInsn(
|
||||||
|
INVOKEVIRTUAL,
|
||||||
|
writerName,
|
||||||
|
"writeFieldFloatValue",
|
||||||
|
"(" + objectDesc + "Z" + org.redkale.asm.Type.getDescriptor(fieldType) + ")Z",
|
||||||
|
false);
|
||||||
|
} else if (fieldType == long.class || fieldType == Long.class) {
|
||||||
|
mv.visitMethodInsn(
|
||||||
|
INVOKEVIRTUAL,
|
||||||
|
writerName,
|
||||||
|
"writeFieldLongValue",
|
||||||
|
"(" + objectDesc + "Z" + org.redkale.asm.Type.getDescriptor(fieldType) + ")Z",
|
||||||
|
false);
|
||||||
|
} else if (fieldType == double.class || fieldType == Double.class) {
|
||||||
|
mv.visitMethodInsn(
|
||||||
|
INVOKEVIRTUAL,
|
||||||
|
writerName,
|
||||||
|
"writeFieldDoubleValue",
|
||||||
|
"(" + objectDesc + "Z" + org.redkale.asm.Type.getDescriptor(fieldType) + ")Z",
|
||||||
|
false);
|
||||||
|
} else if (fieldType == String.class) {
|
||||||
|
String writeFieldName = "writeFieldStringValue";
|
||||||
|
if (isConvertStandardString(factory, element)) {
|
||||||
|
writeFieldName = "writeFieldStandardStringValue";
|
||||||
|
}
|
||||||
|
mv.visitMethodInsn(
|
||||||
|
INVOKEVIRTUAL,
|
||||||
|
writerName,
|
||||||
|
writeFieldName,
|
||||||
|
"(" + objectDesc + "Z" + org.redkale.asm.Type.getDescriptor(fieldType) + ")Z",
|
||||||
|
false);
|
||||||
|
} else {
|
||||||
|
// writeFieldObjectValue(fieldArray, comma, encodeable, value)
|
||||||
|
mv.visitMethodInsn(
|
||||||
|
INVOKEVIRTUAL,
|
||||||
|
writerName,
|
||||||
|
"writeFieldObjectValue",
|
||||||
|
"(" + objectDesc + "Z" + encodeableDesc + objectDesc + ")Z",
|
||||||
|
false);
|
||||||
|
}
|
||||||
|
if (commaLabel != null && elementIndex + 1 < elements.size()) {
|
||||||
|
mv.visitVarInsn(ISTORE, 3); // comma = out.writeFieldXXXValue()
|
||||||
|
} else {
|
||||||
|
mv.visitInsn(POP);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
protected static boolean isConvertStandardString(JsonFactory factory, AccessibleObject element) {
|
protected static boolean isConvertStandardString(JsonFactory factory, AccessibleObject element) {
|
||||||
if (element instanceof Field) {
|
if (element instanceof Field) {
|
||||||
return ((Field) element).getAnnotation(ConvertStandardString.class) != null
|
return ((Field) element).getAnnotation(ConvertStandardString.class) != null
|
||||||
|
|||||||
@@ -76,125 +76,114 @@ public abstract class JsonWriter extends Writer {
|
|||||||
@ClassDepends
|
@ClassDepends
|
||||||
public abstract void writeLatin1To(final boolean quote, final String value);
|
public abstract void writeLatin1To(final boolean quote, final String value);
|
||||||
|
|
||||||
@ClassDepends
|
|
||||||
public void writeField(final byte[] fieldBytes, final char[] fieldChars) {
|
|
||||||
if (charsMode()) {
|
|
||||||
writeTo(fieldChars, 0, fieldChars.length);
|
|
||||||
} else {
|
|
||||||
writeTo(fieldBytes, 0, fieldBytes.length);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// ---------------------------- writeFieldXXXValue 调用前不需要判断值是否为null ----------------------------
|
// ---------------------------- writeFieldXXXValue 调用前不需要判断值是否为null ----------------------------
|
||||||
@ClassDepends
|
@ClassDepends
|
||||||
public abstract boolean writeFieldBooleanValue(byte[] fieldBytes, char[] fieldChars, boolean comma, boolean value);
|
public abstract boolean writeFieldBooleanValue(Object fieldArray, boolean comma, boolean value);
|
||||||
|
|
||||||
@ClassDepends
|
@ClassDepends
|
||||||
public abstract boolean writeFieldByteValue(byte[] fieldBytes, char[] fieldChars, boolean comma, byte value);
|
public abstract boolean writeFieldByteValue(Object fieldArray, boolean comma, byte value);
|
||||||
|
|
||||||
@ClassDepends
|
@ClassDepends
|
||||||
public abstract boolean writeFieldShortValue(byte[] fieldBytes, char[] fieldChars, boolean comma, short value);
|
public abstract boolean writeFieldShortValue(Object fieldArray, boolean comma, short value);
|
||||||
|
|
||||||
@ClassDepends
|
@ClassDepends
|
||||||
public final boolean writeFieldCharValue(byte[] fieldBytes, char[] fieldChars, boolean comma, char value) {
|
public final boolean writeFieldCharValue(Object fieldArray, boolean comma, char value) {
|
||||||
return writeFieldIntValue(fieldBytes, fieldChars, comma, value);
|
return writeFieldIntValue(fieldArray, comma, value);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ClassDepends
|
@ClassDepends
|
||||||
public abstract boolean writeFieldIntValue(byte[] fieldBytes, char[] fieldChars, boolean comma, int value);
|
public abstract boolean writeFieldIntValue(Object fieldArray, boolean comma, int value);
|
||||||
|
|
||||||
@ClassDepends
|
@ClassDepends
|
||||||
public final boolean writeFieldFloatValue(byte[] fieldBytes, char[] fieldChars, boolean comma, float value) {
|
public final boolean writeFieldFloatValue(Object fieldArray, boolean comma, float value) {
|
||||||
return writeFieldLatin1Value(fieldBytes, fieldChars, comma, false, String.valueOf(value));
|
return writeFieldLatin1Value(fieldArray, comma, false, String.valueOf(value));
|
||||||
}
|
}
|
||||||
|
|
||||||
@ClassDepends
|
@ClassDepends
|
||||||
public abstract boolean writeFieldLongValue(byte[] fieldBytes, char[] fieldChars, boolean comma, long value);
|
public abstract boolean writeFieldLongValue(Object fieldArray, boolean comma, long value);
|
||||||
|
|
||||||
@ClassDepends
|
@ClassDepends
|
||||||
public final boolean writeFieldDoubleValue(byte[] fieldBytes, char[] fieldChars, boolean comma, double value) {
|
public final boolean writeFieldDoubleValue(Object fieldArray, boolean comma, double value) {
|
||||||
return writeFieldLatin1Value(fieldBytes, fieldChars, comma, false, String.valueOf(value));
|
return writeFieldLatin1Value(fieldArray, comma, false, String.valueOf(value));
|
||||||
}
|
}
|
||||||
|
|
||||||
@ClassDepends
|
@ClassDepends
|
||||||
public final boolean writeFieldBooleanValue(byte[] fieldBytes, char[] fieldChars, boolean comma, Boolean value) {
|
public final boolean writeFieldBooleanValue(Object fieldArray, boolean comma, Boolean value) {
|
||||||
if (value == null) {
|
if (value == null) {
|
||||||
return comma;
|
return comma;
|
||||||
}
|
}
|
||||||
return writeFieldBooleanValue(fieldBytes, fieldChars, comma, value.booleanValue());
|
return writeFieldBooleanValue(fieldArray, comma, value.booleanValue());
|
||||||
}
|
}
|
||||||
|
|
||||||
@ClassDepends
|
@ClassDepends
|
||||||
public final boolean writeFieldByteValue(byte[] fieldBytes, char[] fieldChars, boolean comma, Byte value) {
|
public final boolean writeFieldByteValue(Object fieldArray, boolean comma, Byte value) {
|
||||||
if (value == null) {
|
if (value == null) {
|
||||||
return comma;
|
return comma;
|
||||||
}
|
}
|
||||||
return writeFieldByteValue(fieldBytes, fieldChars, comma, value.byteValue());
|
return writeFieldByteValue(fieldArray, comma, value.byteValue());
|
||||||
}
|
}
|
||||||
|
|
||||||
@ClassDepends
|
@ClassDepends
|
||||||
public final boolean writeFieldShortValue(byte[] fieldBytes, char[] fieldChars, boolean comma, Short value) {
|
public final boolean writeFieldShortValue(Object fieldArray, boolean comma, Short value) {
|
||||||
if (value == null) {
|
if (value == null) {
|
||||||
return comma;
|
return comma;
|
||||||
}
|
}
|
||||||
return writeFieldShortValue(fieldBytes, fieldChars, comma, value.shortValue());
|
return writeFieldShortValue(fieldArray, comma, value.shortValue());
|
||||||
}
|
}
|
||||||
|
|
||||||
@ClassDepends
|
@ClassDepends
|
||||||
public final boolean writeFieldCharValue(byte[] fieldBytes, char[] fieldChars, boolean comma, Character value) {
|
public final boolean writeFieldCharValue(Object fieldArray, boolean comma, Character value) {
|
||||||
if (value == null) {
|
if (value == null) {
|
||||||
return comma;
|
return comma;
|
||||||
}
|
}
|
||||||
return writeFieldIntValue(fieldBytes, fieldChars, comma, value.charValue());
|
return writeFieldIntValue(fieldArray, comma, value.charValue());
|
||||||
}
|
}
|
||||||
|
|
||||||
@ClassDepends
|
@ClassDepends
|
||||||
public final boolean writeFieldIntValue(byte[] fieldBytes, char[] fieldChars, boolean comma, Integer value) {
|
public final boolean writeFieldIntValue(Object fieldArray, boolean comma, Integer value) {
|
||||||
if (value == null) {
|
if (value == null) {
|
||||||
return comma;
|
return comma;
|
||||||
}
|
}
|
||||||
return writeFieldIntValue(fieldBytes, fieldChars, comma, value.intValue());
|
return writeFieldIntValue(fieldArray, comma, value.intValue());
|
||||||
}
|
}
|
||||||
|
|
||||||
@ClassDepends
|
@ClassDepends
|
||||||
public final boolean writeFieldFloatValue(byte[] fieldBytes, char[] fieldChars, boolean comma, Float value) {
|
public final boolean writeFieldFloatValue(Object fieldArray, boolean comma, Float value) {
|
||||||
if (value == null) {
|
if (value == null) {
|
||||||
return comma;
|
return comma;
|
||||||
}
|
}
|
||||||
return writeFieldLatin1Value(fieldBytes, fieldChars, comma, false, String.valueOf(value));
|
return writeFieldLatin1Value(fieldArray, comma, false, String.valueOf(value));
|
||||||
}
|
}
|
||||||
|
|
||||||
@ClassDepends
|
@ClassDepends
|
||||||
public final boolean writeFieldLongValue(byte[] fieldBytes, char[] fieldChars, boolean comma, Long value) {
|
public final boolean writeFieldLongValue(Object fieldArray, boolean comma, Long value) {
|
||||||
if (value == null) {
|
if (value == null) {
|
||||||
return comma;
|
return comma;
|
||||||
}
|
}
|
||||||
return writeFieldLongValue(fieldBytes, fieldChars, comma, value.longValue());
|
return writeFieldLongValue(fieldArray, comma, value.longValue());
|
||||||
}
|
}
|
||||||
|
|
||||||
@ClassDepends
|
@ClassDepends
|
||||||
public final boolean writeFieldDoubleValue(byte[] fieldBytes, char[] fieldChars, boolean comma, Double value) {
|
public final boolean writeFieldDoubleValue(Object fieldArray, boolean comma, Double value) {
|
||||||
if (value == null) {
|
if (value == null) {
|
||||||
return comma;
|
return comma;
|
||||||
}
|
}
|
||||||
return writeFieldLatin1Value(fieldBytes, fieldChars, comma, false, String.valueOf(value));
|
return writeFieldLatin1Value(fieldArray, comma, false, String.valueOf(value));
|
||||||
}
|
}
|
||||||
|
|
||||||
@ClassDepends
|
@ClassDepends
|
||||||
public final boolean writeFieldStandardStringValue(
|
public final boolean writeFieldStandardStringValue(Object fieldArray, boolean comma, String value) {
|
||||||
byte[] fieldBytes, char[] fieldChars, boolean comma, String value) {
|
return writeFieldLatin1Value(fieldArray, comma, true, value);
|
||||||
return writeFieldLatin1Value(fieldBytes, fieldChars, comma, true, value);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@ClassDepends
|
@ClassDepends
|
||||||
public abstract boolean writeFieldStringValue(byte[] fieldBytes, char[] fieldChars, boolean comma, String value);
|
public abstract boolean writeFieldStringValue(Object fieldArray, boolean comma, String value);
|
||||||
|
|
||||||
@ClassDepends
|
@ClassDepends
|
||||||
public abstract boolean writeFieldObjectValue(
|
public abstract boolean writeFieldObjectValue(
|
||||||
byte[] fieldBytes, char[] fieldChars, boolean comma, Encodeable encodeable, Object value);
|
Object fieldArray, boolean comma, Encodeable encodeable, Object value);
|
||||||
|
|
||||||
protected abstract boolean writeFieldLatin1Value(
|
protected abstract boolean writeFieldLatin1Value(Object fieldArray, boolean comma, boolean quote, String value);
|
||||||
byte[] fieldBytes, char[] fieldChars, boolean comma, boolean quote, String value);
|
|
||||||
|
|
||||||
// ---------------------------- writeFieldXXXValue 主要供JsonDynEncoder使用 ----------------------------
|
// ---------------------------- writeFieldXXXValue 主要供JsonDynEncoder使用 ----------------------------
|
||||||
|
|
||||||
|
|||||||
@@ -31,7 +31,11 @@ public class _DyncFortuneJsonEncoder extends JsonDynEncoder<Fortune> {
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
out.writeTo('{');
|
out.writeTo('{');
|
||||||
out.writeFieldIntValue(idFieldBytes, idFieldChars, false, value.getId());
|
if (out.charsMode()) {
|
||||||
|
out.writeFieldIntValue(idFieldChars, false, value.getId());
|
||||||
|
} else {
|
||||||
|
out.writeFieldIntValue(idFieldBytes, false, value.getId());
|
||||||
|
}
|
||||||
out.writeTo('}');
|
out.writeTo('}');
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -31,7 +31,11 @@ public class _DyncMessageJsonEncoder extends JsonDynEncoder<Message> {
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
out.writeTo('{');
|
out.writeTo('{');
|
||||||
out.writeFieldStandardStringValue(messageFieldBytes, messageFieldChars, false, value.getMessage());
|
if (out.charsMode()) {
|
||||||
|
out.writeFieldStandardStringValue(messageFieldChars, false, value.getMessage());
|
||||||
|
} else {
|
||||||
|
out.writeFieldStandardStringValue(messageFieldBytes, false, value.getMessage());
|
||||||
|
}
|
||||||
out.writeTo('}');
|
out.writeTo('}');
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -46,13 +46,23 @@ public class _DyncUserJsonEncoder extends JsonDynEncoder<User> {
|
|||||||
}
|
}
|
||||||
out.writeTo('{');
|
out.writeTo('{');
|
||||||
boolean comma = false;
|
boolean comma = false;
|
||||||
comma = out.writeFieldIntValue(ageFieldBytes, ageFieldChars, comma, value.getAge());
|
if (out.charsMode()) {
|
||||||
|
comma = out.writeFieldIntValue(ageFieldChars, comma, value.getAge());
|
||||||
comma = out.writeFieldObjectValue(
|
comma = out.writeFieldObjectValue(
|
||||||
createTimeFieldBytes, createTimeFieldChars, comma, this.createTimeEncoder, value.getCreateTime());
|
createTimeFieldChars, comma, this.createTimeEncoder, value.getCreateTime());
|
||||||
comma = out.writeFieldLongValue(idFieldBytes, idFieldChars, comma, value.getId());
|
comma = out.writeFieldLongValue(idFieldChars, comma, value.getId());
|
||||||
comma = out.writeFieldStringValue(nameFieldBytes, nameFieldChars, comma, value.getName());
|
comma = out.writeFieldStringValue(nameFieldChars, comma, value.getName());
|
||||||
comma = out.writeFieldStringValue(sexFieldBytes, sexFieldChars, comma, value.getSex());
|
comma = out.writeFieldStringValue(sexFieldChars, comma, value.getSex());
|
||||||
out.writeFieldStringValue(nickNameFieldBytes, nickNameFieldChars, comma, value.getNickName());
|
out.writeFieldStringValue(nickNameFieldChars, comma, value.getNickName());
|
||||||
|
} else {
|
||||||
|
comma = out.writeFieldIntValue(ageFieldBytes, comma, value.getAge());
|
||||||
|
comma = out.writeFieldObjectValue(
|
||||||
|
createTimeFieldBytes, comma, this.createTimeEncoder, value.getCreateTime());
|
||||||
|
comma = out.writeFieldLongValue(idFieldBytes, comma, value.getId());
|
||||||
|
comma = out.writeFieldStringValue(nameFieldBytes, comma, value.getName());
|
||||||
|
comma = out.writeFieldStringValue(sexFieldBytes, comma, value.getSex());
|
||||||
|
out.writeFieldStringValue(nickNameFieldBytes, comma, value.getNickName());
|
||||||
|
}
|
||||||
out.writeTo('}');
|
out.writeTo('}');
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -34,8 +34,13 @@ public class _DyncWorldJsonEncoder extends JsonDynEncoder<World> {
|
|||||||
|
|
||||||
out.writeTo('{');
|
out.writeTo('{');
|
||||||
boolean comma = false;
|
boolean comma = false;
|
||||||
comma = out.writeFieldIntValue(idFieldBytes, idFieldChars, comma, value.getId());
|
if (out.charsMode()) {
|
||||||
out.writeFieldIntValue(randomNumberFieldBytes, randomNumberFieldChars, comma, value.getRandomNumber());
|
comma = out.writeFieldIntValue(idFieldChars, comma, value.getId());
|
||||||
|
out.writeFieldIntValue(randomNumberFieldChars, comma, value.getRandomNumber());
|
||||||
|
} else {
|
||||||
|
comma = out.writeFieldIntValue(idFieldBytes, comma, value.getId());
|
||||||
|
out.writeFieldIntValue(randomNumberFieldBytes, comma, value.getRandomNumber());
|
||||||
|
}
|
||||||
out.writeTo('}');
|
out.writeTo('}');
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user