This commit is contained in:
redkale
2024-10-20 14:12:23 +08:00
parent aec47a7a9a
commit 1d6b1a3a30
2 changed files with 5 additions and 6 deletions

View File

@@ -343,15 +343,15 @@ public class ObjectEncoder<W extends Writer, T> implements Encodeable<W, T> {
if (out.objExtFunc != null) { if (out.objExtFunc != null) {
ConvertField[] extFields = out.objExtFunc.apply(value); ConvertField[] extFields = out.objExtFunc.apply(value);
if (extFields != null) { if (extFields != null) {
Encodeable<W, ?> anyEncoder = factory.getAnyEncoder();
for (ConvertField en : extFields) { for (ConvertField en : extFields) {
if (en != null) { if (en != null) {
Encodeable<W, ?> extEncoder = factory.loadEncoder(en.getType());
maxPosition++; maxPosition++;
out.writeFieldValue( out.writeFieldValue(
en.getName(), en.getName(),
en.getType(), en.getType(),
Math.max(en.getPosition(), maxPosition), Math.max(en.getPosition(), maxPosition),
anyEncoder, extEncoder,
en.getValue()); en.getValue());
} }
} }

View File

@@ -151,12 +151,11 @@ public abstract class Writer {
* @param fieldName 字段名称 * @param fieldName 字段名称
* @param fieldType 字段类型 * @param fieldType 字段类型
* @param fieldPos 字段顺序 * @param fieldPos 字段顺序
* @param anyEncoder Encoder * @param fieldEncoder Encoder
* @param value 写入的字段对象 * @param value 写入的字段对象
*/ */
@SuppressWarnings("unchecked") @SuppressWarnings("unchecked")
public void writeFieldValue( public void writeFieldValue(String fieldName, Type fieldType, int fieldPos, Encodeable fieldEncoder, Object value) {
final String fieldName, Type fieldType, int fieldPos, Encodeable anyEncoder, Object value) {
if (value == null) { if (value == null) {
if (nullable()) { if (nullable()) {
this.writeField(null, fieldName, fieldType, fieldPos); this.writeField(null, fieldName, fieldType, fieldPos);
@@ -181,7 +180,7 @@ public abstract class Writer {
} }
} }
this.writeField(null, fieldName, fieldType, fieldPos); this.writeField(null, fieldName, fieldType, fieldPos);
anyEncoder.convertTo(this, value); fieldEncoder.convertTo(this, value);
this.comma = true; this.comma = true;
} }