//com.github.komidawi.ObjectWithList
public class ObjectWithList {
private List<String> list;
// ...
}
//com.github.komidawi.ListWrapper
public class ListWrapper {
private List<String> wrappedList;
// ...
}
//com.github.komidawi.ObjectWithWrapper
public class ObjectWithWrapper {
private ListWrapper list;
// ...
}
MyCustomConverter类来包装/展开这些列表。
mapperConfiguration。xml配置文件
<!-- ... -->
<configuration>
<stop-on-errors>true</stop-on-errors>
<wildcard>true</wildcard>
<custom-converters>
<converter type="com.github.komidawi.MyCustomConverter">
<class-a>com.github.komidawi.ListWrapper</class-a>
<class-b>java.util.List</class-b>
</converter>
</custom-converters>
</converter>
<mapping>
<class-a>com.github.komidawi.ObjectWithList</class-a>
<class-b>com.github.komidawi.ObjectWithWrapper</class-b>
</mapping>
// ... creating objects
ObjectWithList objectWithList = mapper.map(objectWithWrapper, ObjectWithList.class);
objectWithList.getList(); // This is null
不幸的是,映射后,objectWithList的列表字段为null。我使用了调试器,在这种情况下,Dozer甚至没有输入MyCustomConverter。
令人惊讶的是,不同方向的映射效果很好:
ObjectWithWrapper objecthWithWrapper = mapper.map(objectWithList, ObjectWithWrapper.class);
objecthWithWrapper.getList(); // This is not null
映射后,objectWithList具有null而不是实际列表。我发现它甚至没有进入MyCustomConverter
集合是特殊的,类型擦除使其更具挑战性。如果您只希望wrappedList中的项目位于生成的ObjectWithList实例的列表中,那么这可以在不使用转换器的情况下完成。Dozer将处理嵌套属性映射,因此您可以通过指示Dozer将列表映射到彼此的方式来描述映射。
new BeanMappingBuilder() {
configure() {
mapping(ObjectWithList.class, ObjectWithWrapper.class,
.fields("list.wrappedList", "list")
}
}
或在XML中
<mapping>
<class-a>com.github.komidawi.ObjectWithList</class-a>
<class-b>com.github.komidawi.ObjectWithWrapper</class-b>
<field>
<a>list.wrappedList</a>
<b>list</b>
</field>
</mapping>
我正在使用访问数据的Spring Boot项目中工作,并且我在使用
问题内容: Jackson json注释中以下jax-b注释的等效方式是什么? 我需要生成json而不是xml,并且需要了解在jax-b中等效表示的常规jackson批注。 重命名字段。 使用getter代替字段。 如果json / xml元素名称是Java保留字(例如“ ”,“ ”,“ ”等),则这些功能尤其重要。 因此我们必须将POJO字段分别命名为“ new ”,“ _ public ”,“
我目前正在使用Jackson的XmlMapper和ObjectMapper。我想将该字符串映射到一个POJO(我想我正确地使用了该术语),该POJO有一个与JSON字符串字段同名的私有字段。XML字符串对于同一字段/属性有不同的名称,我想使用JSON字段名称。 我还想从本质上“忽略”该字段(同时保留它),并将其存储为类似于JsonNode的内容,因为该字段的值可以是一些复杂的嵌套值,而没有已知的形
我会从我想达到的目标开始 意图 该软件在for循环中解析XML数据。处理数据的 for 循环将持续到 50(因为我得到了 50 个不同的结果)。我最初所做的是,-方法解析整个XML数据并将其保存到TextViews中并显示它。但现在我想添加一个启动画面,只要数据加载就会显示。 XML文件像任何其他普通XML文件一样构建,因此当我通过for循环时,键总是相同的,但值不同。 方法 我已经做的是创建一个
问题内容: 我有一个无法控制其生成方式的XML。我想通过将其分解为我手工编写的类来创建一个对象。 其结构的一个片段如下所示: 我该如何处理这种情况?当然,元素数是可变的。 问题答案: 如果使用以下对象模型,则每个未映射的key_#元素都将保留为org.w3c.dom.Element的实例: 如果任何元素对应于使用@XmlRootElement批注映射的类,则可以使用@XmlAnyElement(l
在我的搜索引擎中,用户可以选择搜索大小写敏感或不敏感。如果他们选择这样做,查询将搜索使用自定义区分大小写分析器的字段。这是我的设置: 获取/candidates/_settings 因此,我从这个答案中创建了一个名为的自定义分析器。我试图定义我的,如下所示: 把/candidates/_mapping/candidate 因此,在查询区分大小写的匹配时,我可以执行以下操作: 我甚至没有进入最后一步