代码之家  ›  专栏  ›  技术社区  ›  quarks

映射到JSON转换

  •  0
  • quarks  · 技术社区  · 7 年前

    我想知道如何确保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;
        }
    }
    
    0 回复  |  直到 7 年前