当前位置: 首页 > 知识库问答 >
问题:

如何将属性从java.lang.Object映射到java.lang.String

左凯定
2023-03-14

MapStrut的新成员;对象到字符串错误:

[错误] /util/LicenseMapper.java:[11,23]无法映射属性" Java . lang . object license . custom fields[]。值" to " Java . lang . string license . custom fields[]。值”。考虑声明/实现一个映射方法:“Java . lang . string map(Java . lang . object value)”。

法典:

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

vo。许可证包含属性为的自定义字段列表

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

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

有人能告诉我在LicenseMapper中需要哪些设置才能将对象转换为字符串吗?

许可证结构-来源和目标:

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

源中的自定义字段结构(删除了 gson 批注):

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

目标中的自定义字段结构

private String name;
private String datatype;
private String value;

共有2个答案

袁雅逸
2023-03-14

你可以这样做:

@Mapping(target = "yourTarget ",source = " your class . cust field . value ")

在此输入图像描述

薛承基
2023-03-14

你可以尝试在表达式中使用注释@映射

@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); 
 类似资料:
  • 在我的数据库表中,我有一个列,它的内容可以是Y或N(CHECK约束)。我在Java中定义了一个String属性,在我的类中定义了一个基于String的setter。此外,为了方便起见,我添加了一个带有布尔参数的setter/getter。 那么,Hibernate基于什么属性进行映射呢?方法名称?参数名称?参数类型?在setter中使用可以吗?如果我的属性的名称与表列的名称不同,这会有什么不同吗?

  • 假设我有以下映射目标。 如何从其他属性的Iterable映射到其他属性? 我可以这样做吗?

  • 我在mapstruct映射器上遇到了问题。当运行mvn clean install(或mvn clean compile)时,我会得到以下错误: 问题是我不知道mapstruct从哪里获得这个“java.lang.Integer Architecture.Loads”。我不明白这个整数是从哪里来的,正如您在我的代码中看到的,没有整数。而且,到目前为止,我在使用类似的映射器时从未遇到过这个错误。 下

  • 我需要将源类中的字段值映射到字段属性。我可以使用Mapstruct使用@mapper注释的'expression'参数来完成 有没有其他方法可以不使用“表达式”来进行映射?

  • 问题内容: 我正在使用Tire进行elasticsearch。在我的应用程序中,我有2个模型。价格和产品。 我正在尝试搜索我的Price类,并在搜索字段中使用它所属的产品的属性。现在,如果我有一个名为的产品,并输入“ pro”,“ prod”或“ duct”,则没有结果。但是键入“产品”或“产品”会显示结果。我相信问题出在我的地图上。我查看了查询及其: 我认为应该是: 从以下问题 我不知道该如何使

  • 问题内容: 假设我正在调用一个API,该API用产品的以下JSON响应: 我可以使用Jackson标注来映射产品ID和名称: 然后使用fromJson方法创建产品: 但是现在我试图弄清楚如何获取品牌名称,这是一个嵌套属性。我希望这样的事情会起作用: 但是,当然没有。有没有一种简单的方法可以使用注释来完成我想要的工作? 我尝试解析的实际JSON响应非常复杂,即使我只需要一个字段,我也不必为每个子节点