2016-05-06 7 views
2

JAXB追加列挙型のようなフラット構造

@XmlRootElement 
public class UserInfoFlattened 
{ 
    @XmlElement 
    private int id; 

    @XmlElement 
    private String name; 

    @XmlElement (name = "value") 
    private boolean allowed; 
} 

@XmlRootElement 
public class UserInfo 
{ 
    private UserLevel level; 

    @XmlElement (name = "value") 
    private boolean allowed; 
} 

public enum UserLevel 
{ 
    READER ("Reader", 9901), 
    TESTER ("Tester", 9903); 

    private final String name; 
    private final int id; 

    private UserLevel(String name, int id) 
    { 
     this.name = name; 
     this.id = id; 
    } 

    get...() 
} 

答えて

0

一つの解決策は、ご希望のJSONの構造、この(コンストラクタ不足している)のようなものと一致する別のJAXBクラスを持っているだろう(のUserInfoは、同じ階層レベルでの列挙型フィールドが含まれている必要があります)そして、あなたはこのように見える程度クラスUserInfo、上@XmlJavaTypeAdapterを使用する必要があります。

public class UserInfoAdapter extends XmlAdapter<UserInfoFlattened, UserInfo> 
{ 
    @Override 
    public UserInfoFlattened marshal(UserInfo userInfo) 
    { 
     return new UserInfoFlattened(userInfo.getValue(), userInfo.getUserLevel().getId(), userInfo.getUserLevel().getName()); 
    } 

    // unmarshal analogous 
} 
+0

良いアイデア、ありがとうございました! –

関連する問題