2016-03-31 13 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

ドーザー、および同様の豆マッピングLIBSは、あなたの最高のある注釈@SerializedName

エンティティクラスでマークnameプロパティベット。また、あなたが発見したようなJSONマッピングライブラリもこれに使用できます。 – kaqqao

答えて

1

々BeanUtils私はGsonライブラリを使用し、私の場合には適していません。 Gsonはオブジェクトをjsonに変換します。その後、私はUserクラスにjsonを変換します。使い方

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")); 

その後、あなたのBeanを埋めるために々BeanUtilsを使用します。

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

ありがとう、しかし、私は20フィールド名の問題がある場合? –

+0

マップ内の20個のフィールドを使用して、データマップのキーを置き換えることができます。 – mks

+0

このソリューションはフィールド置換リストをサポートする必要がありますが、それは機敏ではありません。 n + 1エンティティと20以上のフィールド - >地獄をサポートします。私はgsonのトリックについて考えます(後でチェックして書きます) –

関連する問題