Gson gson = new Gson(); MapWrapper wrapper = new MapWrapper(); wrapper.setMyMap(HtKpi); String serializedMap = gson.toJson(wrapper); // add 'serializedMap' to preferences
@Controller public class MapController { @GetMapping("map.html") public String get(Map<String, Object> model) throws Exception { MapWrapper wrapper = new MapWrapper(); wrapper.getMap().put("1", "One"); wrapper.getMap().put("2", "Two"); wrapper.getMap().put("3", "Three"); model.put("wrapper", wrapper); return "map"; } @PostMapping("map.html") public String post(Map<String, Object> model, @ModelAttribute("wrapper") MapWrapper wrapper) throws Exception { return "map"; } }
MapWrapper wrapper = new MapWrapper(); wrapper.wrapped.put("key1", 1); wrapper.wrapped.put("key2", 2); String json = gson.toJson(wrapper, MapWrapper.class); System.out.println(json); MapWrapper newWrapper = gson.fromJson(json, MapWrapper.class); for(Entry<String, Integer> e : newWrapper.wrapped.entrySet()) { System.out.println(e.getKey() + ", " + e.getValue()); }
public class MyTypeAdapter implements JsonSerializer<MapWrapper>, JsonDeserializer<MapWrapper> { @Override public JsonElement serialize(MapWrapper src, Type typeOfSrc, JsonSerializationContext context) { JsonObject obj = new JsonObject(); src.wrapped.entrySet().forEach(e -> obj.add(e.getKey(), new JsonPrimitive(e.getValue()))); return obj; } @Override public MapWrapper deserialize(JsonElement json, Type typeOfT, JsonDeserializationContext context) throws JsonParseException { MapWrapper wrapper = new MapWrapper(); json.getAsJsonObject().entrySet().forEach(e -> wrapper.wrapped.put(e.getKey(), e.getValue().getAsInt())); return wrapper; } }
private void setClientAdditionalInfo(Map map, Client client, User user) { Map additionalInfo = (Map) map.get("additionalInfo"); MapWrapper wrapper = new MapWrapper(additionalInfo); client.setGender(wrapper.get("gender")); ... }
@Override public MapWrapper marshal(Map<String,String> m) throws Exception { MapWrapper wrapper = new MapWrapper(); List<JAXBElement<String>> elements = new ArrayList<JAXBElement<String>>(); for (Map.Entry<String, String> property: m.entrySet()) {
/** * <p> * ref: http://stackoverflow.com/questions/21382202/use-jaxb-xmlanyelement-type-of-style-to-return-dynamic-element-names * </p> * @author MEC * */ public static class MapAdapter extends XmlAdapter<MapWrapper, Map<String, String>>{ @Override public Map<String, String> unmarshal(MapWrapper v) throws Exception { Map<String, String> map = v.toMap(); return map; } @Override public MapWrapper marshal(Map<String, String> m) throws Exception { MapWrapper wrapper = new MapWrapper(); for(Map.Entry<String, String> entry : m.entrySet()){ wrapper.addEntry(new JAXBElement<String>(new QName(entry.getKey()), String.class, entry.getValue())); } return wrapper; } }
w = new MapWrapper(beanManager); else if (obj.getClass().isArray() || Collection.class.isAssignableFrom(obj.getClass()))
w = new MapWrapper(); else if (obj.getClass().isArray() || Collection.class.isAssignableFrom(obj.getClass())) w = new BagWrapper();
w = new MapWrapper(beanManager); else if (obj.getClass().isArray() || Collection.class.isAssignableFrom(obj.getClass()))