我有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
?
我没有找到该案例的任何注释
答案 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'}