Я хочу знать, как убедиться, что XStream преобразует демона Map / HashMap в JSON, например
@XStreamConverter(value = CustomMapJSONConverter.class)
class MyPOJO {
private String name;
private Long amount;
private Map<String,Comparable> properties;
}
Таким образом, он должен вывести что-то вроде:
{
"name" : "John Smith",
"amount" : 123456,
"properties" : {
"someProperty" : "some value"
}
}
Каким может быть конвертер XStream, который подходит для этого сценария и может использоваться как @XStreamConverter
?
Вот мой конвертер (но это совершенно неправильно)
public class CustomMapJSONConverter implements Converter {
@Override
public void marshal(Object source, HierarchicalStreamWriter writer, MarshallingContext context) {
writer.startNode("properties");;
String json = new Gson().toJson(source);
writer.setValue(json);
writer.endNode();
}
@Override
public Object unmarshal(HierarchicalStreamReader reader, UnmarshallingContext context) {
// TODO
}
@Override
public boolean canConvert(Class type) {
if(Map.class.isAssignableFrom(type)) {
return true;
}
return false;
}
}