MapStruct:如何将属性从“ java.lang.Object映射到” java.lang.String”

父亲:

MapStrut的新功能;对象到字符串错误:

[错误] /util/LicenseMapper.java:[11,23]无法将属性“ java.lang.Object license.customFields []。value”映射到“ java.lang.String license.customFields []。value”。考虑声明/实现一个映射方法:“ java.lang.String map(java.lang.Object value)”。

码:

@Mapper
public interface LicenseMapper {
    List<License> jsonToDao(List<com.integrator.vo.license.License> source);
}

vo.license包含具有以下属性的CustomFields列表:

@SerializedName("Value")
@Expose
private Object value;

杰森有一个字段作为对象的输入,因为它可能会布尔或字符串或任何东西,所以我已经将其映射到对象。而dao层在String中具有相同的字段。(在自定义映射器中,我只是String.valueof,但不确定如何使用Mapstrut实现它)

谁能告诉我LicenseMapper中需要什么设置才能将Object转换为String?

许可证结构-源和目标:

.
.
private String notes;
private Boolean isIncomplete;
private List<CustomField> customFields = null;
private List<Allocation> allocations = null;

Source中的自定义字段结构(已删除gson注释):

.
.
private String name;
private Object dataType;
private Object value;

目标中的自定义字段结构

private String name;
private String datatype;
private String value;
尼克:

您可以尝试对表达式使用注释@Mapping

@Mapping(expression = "java( String.valueOf(source.getValue()) )", target = "value")
List<License> jsonToDao(List<com.integrator.vo.license.License> source);

更新

@Mapper
public interface LicenseMapper {
LicenseMapper MAPPING = Mappers.getMapper(LicenseMapper.class);

List<License> entityListToDaoList(List<com.integrator.vo.license.License> source);

License entityToDao(com.integrator.vo.license.License source);

List<CustomField> customFieldListToCustomFieldList(List<*your custom field path*CustomField> source);

@Mapping(expression = "java( String.valueOf(source.getValue()) )", target = "value")
CustomField customFieldToCustomField(*your custom field path*CustomField source);
}

用您的代码

import static ***.LicenseMapper.MAPPING;

***
List<License> myList = MAPPING.jsonToDao(mySource); 

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

ClassCastException:无法将java.lang.Object []强制转换为java.lang.String [] android

哈希映射:java.lang.ClassCastException:java.lang.Long 不能转换为 java.lang.String

java.lang.ClassCastException:[Ljava.lang.Object; 无法转换为[Ljava.lang.String;

我如何解決這個問題,它說“queryForObject(java.lang.String, java.lang.Object[], java.lang.Class<T>)”已被棄用

Xamarin Android将Java.Lang.Enum映射到C#枚举

JPA Hibernate无法将java.lang.String字段设置为java.lang.String异常

java.lang.ClassCastException:无法将java.lang.Double强制转换为java.lang.String

java.lang.ClassCastException:无法将java.lang.String强制转换为java.lang.Double

java.lang.ClassCastException: java.lang.String 不能转换为 [Ljava.lang.Object; 尝试通过 Hibernate 将列值获取到列表时

如何解决此错误“无法解析方法'addData(java.lang.String,java.lang.String,java.lang.String,java.lang.String,java.lang.String)'”?

(java.lang.String)不能应用于(java.lang.Object)

空对象引用上的java.lang.String java.lang.Object.toString()'

AsyncTask:ClassCastException:java.lang.Object []无法转换为java.lang.String []

Flutter 尝试调用虚拟方法 'boolean java.lang.String.equals(java.lang.Object)'

空对象引用上的方法 boolean java.lang.String.equals(java.lang.Object)'

java.lang.NoSuchMethodError:java.lang.String.isEmpty()Z

java.lang.Long 匹配 java.lang.String

sharedPref.getInt:无法将java.lang.String强制转换为java.lang.Integer

ModelMapper无法将java.lang.String转换为java.lang.Long

java.lang.ClassCastException:无法将Z强制转换为java.lang.String

无法将类java.lang.Integer转换为类java.lang.String

无法将解析java.lang.String强制转换为java.lang.Boolean

LibGDX中的图块无法将java.lang.String转换为java.lang.Boolean

Spark 在将 rdd 与 java 语音匹配库映射到 null 值时抛出 java.lang.NullPointerException

groovy.lang.MissingMethodException String vs java.lang.String

java.lang.Object; 不能投射到shoppingbasket.Product

将java.lang.String类型映射为Postgres JSON类型

java.lang.RuntimeException:java.lang.ClassCastException:java.lang.Long无法强制转换为java.lang.String

java.lang.ClassCastException:[Ljava.lang.String; 无法转换为java.lang.String