JAXB添加枚举为平面结构
问题描述:
我怎么能得到一个简单的JSON结构这样JAXB添加枚举为平面结构
{
"id": 9901,
"name": "Reader",
"value": true
}
与JAXB注释和代码? (的UserInfo应该包含在同一层级枚举字段)
@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...()
}
答
一个解决办法是有,你想要的JSON结构,这样的事情(构造函数缺失)相匹配的另一JAXB类:
@XmlRootElement
public class UserInfoFlattened
{
@XmlElement
private int id;
@XmlElement
private String name;
@XmlElement (name = "value")
private boolean allowed;
}
那么你应该在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
}
好主意,谢谢! –