java:使用动态键将HashMap转换为Bean

时间:2014-07-14 17:00:56

标签: java hashmap mapping smooks

我正在尝试转换大型地图>一些JavaBean。 map的键对应于JavaBean的某些属性,并且值以某种方式被解码为属性值。所以我决定使用一些util,但不知道什么会起作用。我对这个util(或框架)有一些要求:

  1. 所有配置必须位于单独的文件中
  2. 应该可以映射动态数量的键: 有一张地图:

    键|值
    quan | ñ
    key_1 | VALUE_1
    key_2 | _2
    ........ | .............
    key_n | value_n

  3. 其中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做得更好?或者你可以为我的问题推荐另一个映射框架?

0 个答案:

没有答案