BeanUtils:不同的属性名称

时间:2016-03-31 18:31:42

标签: java apache-commons-beanutils

我有BeanUtils的问题,我需要将Map转换为具有不同属性名称的POJO

实体:

public class User {
    private int id;
    private String nickname;
    private int agility;

    public int getId() {
        return id;
    }

    // getters and setters
}

目标应用程序API返回HashMap(通过XML-RPC),类似于:

user_id => "123456"
nickname => "Bob"
agility => 30

但我的POJO课程没有user_id属性

如何翻译属性名称user_id => id

我没有找到该案例的任何注释

2 个答案:

答案 0 :(得分:1)

如果在收到HashMap之后允许它更晚,则更改密钥。

map.put("id", map.remove("user_id"));

然后使用BeanUtils填充你的bean:

User usr = new User();
BeanUtils.populate(usr, map);

答案 1 :(得分:1)

BeanUtils不适合我的情况,我使用Gson库。 Gson有功能 - 将对象转换为json。之后我将json转换为User类。由注释@SerializedName

标记的name属性

实体类:

class User {
    @SerializedName("user_id")
    private int id;
    private String name;

    // getters and setters here
    // .toString
}

用法:

Map<String,String> apiObject = new HashMap<>();

apiObject.put("user_id","123123");
apiObject.put("name","Bob");

Gson gson = new Gson();
String json = gson.toJson(values);
User user = gson.fromJson(json, User.class);

System.out.println(user);

示例输出:

User{id=123123, name='Bob'}