2016-03-31 89 views
0

我有BeanUtils的一個問題,我需要地圖轉換成不同的屬性名BeanUtils的:不同的屬性名稱

到POJO

實體:

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

    public int getId() { 
     return id; 
    } 

    // getters and setters 
} 

目標應用程序的API(通過XML-RPC)返回的HashMap用類似的東西:

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

,但我的POJO類沒有user_id財產

如何翻譯屬性名稱user_id =>id

如果允許後HashMap中您收到後,你的變化而變化的關鍵我沒有發現這種情況下

+1

推土機,以及類似的豆映射庫,是您最好的賭注。另外,像你發現的JSON映射庫可以用於這個。 – kaqqao

回答

1

BeanUtils的不適合我的情況,我用Gson庫。 Gson有功能 - 將對象轉換爲json。之後,我將json轉換爲User類。 name財產標誌着註釋@SerializedName

實體類:

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

任何註釋。

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

然後使用BeanUtils的填充你的bean:

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

謝謝,但如果我有20場的名稱問題? –

+0

你可以在地圖中的20個字段,並用它來替換你的數據地圖的關鍵。 – mks

+0

這個解決方案需要支持字段替換列表,它不是敏捷的。 n + 1個實體和20個以上的領域 - >支持地獄。我想與gson的詭計(我會稍後檢查並寫下它) –

相關問題