BeanUtils:不同的 属性 个名称

BeanUtils: Different property names

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

实体:

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

    public int getId() {
        return id;
    }

    // getters and setters
}

目标应用程序 API returns HashMap(通过 XML-RPC)与类似的东西:

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

但是我的 POJO class 没有 user_id 属性

如何翻译属性名字user_id=>id?

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

如果你收到HashMap后允许以后使用,你就改改key。

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

然后使用 BeanUtils 填充您的 bean:

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

BeanUtils 不适合我的情况,我使用了 Gson library. Gson has feature - convert object to json. After that i convert json into User class. name property marked by annotation @SerializedName

实体class:

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'}