私は次のものを持っていますEnum
:
public enum MyState {
Open("opened"),
Close("closed"),
Indeterminate("unknown");
private String desc;
private MyState(String desc) {
setDesc(desc);
}
public String getDesc() {
return this.desc;
}
private void setDesc(String desc) {
this.desc = desc;
}
}
JSON要素" "をインスタンスConverter
にマップバックすることを認識しているXStreamを作成しようとしています。mystate
MyState
"someJson": {
"object1": {
"mystate": closed
}
}
これにより、他のオブジェクト(someJson
およびobject1
)の中でも特にMyState.Close
インスタンスが生成されます。私は始めましたがConverter
、それほど遠くまでは行きませんでした:
public class MyStateEnumConverter implement Converter {
@Override
public boolean canConvert(Class clazz) {
return clazz.equals(MyState.class);
}
@Override
public void marshal(Object value, HierarchialStreamWriter writer, MarshallingContext context) {
??? - no clue here
}
@Override
public Object unmarshal(HierarchialStreamReader reader, UnmarshallingContext context) {
??? - no clue here
}
}
次に、マッパーを作成して使用するには、次のようにします。
XStream mapper = new XStream(new JettisonMappedXmlDriver());
mapper.registerConverter(new MyStateEnumConverter);
SomeJson jsonObj = mapper.fromXML(jsonString);
// Should print "closed"
System.out.println(jsonObject.getObject1().getMyState().getDesc());
どうすれば実装できmarshal
、unmarshal
目的のマッピングを取得できますか?前もって感謝します!