Преобразование карты в JSON - PullRequest
       10

Преобразование карты в JSON

0 голосов
/ 18 декабря 2018

Я хочу знать, как убедиться, что 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;
    }
}
...