打印结果;
错误文本:
1 {"u":{"name":"name","pwd":"123","age":12},"code":1,"msg":"aaaaaaaaaaaaa"} 2 {u={name=name, pwd=123, age=12.0}, code=1.0, msg=aaaaaaaaaaaaa} 3 {name=name, pwd=123, age=12.0} Exception in thread "main" java.lang.ClassCastException: com.google.gson.internal.LinkedTreeMap cannot be cast to test.U at test.GsonWhithOBJ.main(GsonWhithOBJ.java:28) springMVC 返回一个json 是Map<String,Object>序列化的,客户端拿到这个json以后返序列化,需要得到put的,一个自定义对象,如何得到这个自定义对象呢? 因为这个map中必须带着 msg信息和 code 返回码(和其他的json接口返回的结构都要保持一致),所以只能使用泛型Map<String,Object> 你好 比如我要 map.put("user",User) map.put("groups",List<group>) map.put("page",Page) 这样多种类型的数据,怎么用一个result返回,是不是必须把这几种类型的数据封装到一个新的类型A中再 指定Reslt<A> r=new Reslt<A>(); public static <T> Map<String, T> toMap(String jsonStr, Class<T> clazz) { if (StringUtils.isBlank(jsonStr)) { return null; Map<String, T> stringTMap = gson.fromJson(jsonStr, new MapParameterizedType(clazz)); return stringTMap; static class MapParameterizedType<T> implements ParameterizedType { private Class<T> clazz; protected MapParameterizedType(Class<T> clazz) { this.clazz = clazz; @Override public Type[] getActualTypeArguments() { return new Type[]{String.class, clazz}; @Override public Type getRawType() { return Map.class; @Override public Type getOwnerType() { return null; 评论 (0) 引用此答案
springMVC 返回一个json 是Map<String,Object>序列化的,客户端拿到这个json以后返序列化,需要得到put的,一个自定义对象,如何得到这个自定义对象呢? 因为这个map中必须带着 msg信息和 code 返回码(和其他的json接口返回的结构都要保持一致),所以只能使用泛型Map<String,Object>
public static <T> Map<String, T> toMap(String jsonStr, Class<T> clazz) { if (StringUtils.isBlank(jsonStr)) { return null; Map<String, T> stringTMap = gson.fromJson(jsonStr, new MapParameterizedType(clazz)); return stringTMap; static class MapParameterizedType<T> implements ParameterizedType { private Class<T> clazz; protected MapParameterizedType(Class<T> clazz) { this.clazz = clazz; @Override public Type[] getActualTypeArguments() { return new Type[]{String.class, clazz}; @Override public Type getRawType() { return Map.class; @Override public Type getOwnerType() { return null; 评论 (0) 引用此答案
static class MapParameterizedType<T> implements ParameterizedType { private Class<T> clazz; protected MapParameterizedType(Class<T> clazz) { this.clazz = clazz; @Override public Type[] getActualTypeArguments() { return new Type[]{String.class, clazz}; @Override public Type getRawType() { return Map.class; @Override public Type getOwnerType() { return null; 评论 (0) 引用此答案