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) {
ConvertField[] extFields = out.objExtFunc.apply(value);
if (extFields != null) {
Encodeable<W, ?> anyEncoder = factory.getAnyEncoder();
for (ConvertField en : extFields) {
if (en != null) {
Encodeable<W, ?> extEncoder = factory.loadEncoder(en.getType());
maxPosition++;
out.writeFieldValue(
en.getName(),
en.getType(),
Math.max(en.getPosition(), maxPosition),
anyEncoder,
extEncoder,
en.getValue());
}
}

View File

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