将pojo变量转换为另一个bean,将其作为名称和值的列表

时间:2017-07-14 18:40:33

标签: spring spring-boot mapping dozer mapstruct

我有一组带有变量的bean。我想将它们转换为另一个bean,即具有名称和值的参数。我需要在名称 - 值对中创建所有变量的参数列表。

我在考虑Dozer或mapstruct,但这似乎并没有多大帮助。

今天,使用objectmapper将其转换为地图,迭代地图并创建参数列表。

任何帮助都将不胜感激。

2 个答案:

答案 0 :(得分:0)

    class TestClass{
    private String str1;
    private String str2;
    private String str3;
    }

    Class Paramters{
    private String name;
    private String value;
    }

    **Bean1:**
    '[
        {
            "str1": "string",
            "str2": "string",
            "str3": "string"
        },
        {
            "str1": "string1",
            "str2": "string1",
            "str3": "string1"
        }
    ]'

    To Convert **Bean2**

   '[{
        "parameters": [
            {
                "name": "str1",
                "value": "string"
            },
            {
                "name": "str2",
                "value": "string"
            },
            {
                "name": "str3",
                "value": "string"
            }
        ]
    },
    {
        "parameters": [
            {
                "name": "str1",
                "value": "string"
            },
            {
                "name": "str2",
                "value": "string"
            },
            {
                "name": "str3",
                "value": "string"
            }
        ]}]'

答案 1 :(得分:0)

Mapstruct等通常会从一个bean转换为另一个bean,您实际上是在尝试转换为映射并将其包装到bean中。 像BeanMap之类的东西会更合适。

未经测试的示例代码:

class Bean2 {
    private final Map<String, Object> properties;

    public Bean2(Map properties) { this.properties = properties }


    public static class Entry { String name, String value /* getters and setters */}

    @JsonProperty
    public List<Map<String, Object>> getProperties() {
        // build a map of maps here, each map would have 
    } 
} 

然后只是:

new Bean2(new BeanMap(bean2))