我正在尝试转换大型地图>一些JavaBean。 map的键对应于JavaBean的某些属性,并且值以某种方式被解码为属性值。所以我决定使用一些util,但不知道什么会起作用。我对这个util(或框架)有一些要求:
应该可以映射动态数量的键: 有一张地图:
键|值
quan | ñ
key_1 | VALUE_1
key_2 | _2
........ | .............
key_n | value_n
其中n - 是任何数字 并且JavaBean具有一些bean的List。他们有一个属性。 value_1,value_2,...必须映射到此属性中,最后列表中必须有这么多bean,就像map中的这些键和值一样。
3 ..应该可以为属性映射设置自定义解码器,因为在大多数情况下,map中的值是一个带有1值的List,所以我需要获取列表的第一项(如果它不是空的)
4 ..应该可以运行一些脚本来执行非凡的映射,例如: 有一张地图,在2d点描述。 JavaBean具有HashMap类型的属性,其中value_1映射到Bean1,输入映射中的某些类似值映射到Bean2。
我试图使用smooks,但是当我开始使用时,所有这些要求还不清楚,并且smooks是新的东西,直到现在我还没有使用它。所以smooks配置不包含整个业务逻辑(因为第二个请求)并且看起来很难看,我不喜欢这样。我可以为2d点显示最丑陋的片段:
<jb:bean beanId="javaBean" class="com.example.JavaBean" createOnElement="map">
<jb:wiring property="someBeans" beanIdRef="someBeanItems"/>
</jb:bean>
<jb:bean beanId="someBeanItems" class="java.util.ArrayList" createOnElement="map/entry">
<jb:wiring beanIdRef="someBeanItem"/>
</jb:bean>
<jb:bean beanId="someBeanItem" class="com.example.someBeanItem" createOnElement="map/entry">
<condition>map.quan[0]>0</condition>
<jb:expression property="property1">
index = map.quan[0]-1;
value = additionalProperties.property1_List[index];
map.quan[0] = map.quan[0] - 1;
return value;
</jb:expression>
</jb:bean>
这里“property1_List”在执行smooks之前构建。
现在我寻找更好的东西并需要你的帮助:也许你知道如何使用smooks做得更好?或者你可以为我的问题推荐另一个映射框架?