第一种方式
@Slf4j
public class MapUtil {
public static <T> Map<String, String> objectToMap(T t) {
return objectToMapAndKV(t, String.class, String.class);
}
public static <T, K> Map<K, String> objectToMapAndK(T t, Class<K> k) {
return objectToMapAndKV(t, k, String.class);
}
public static <T, V> Map<String, V> objectToMapAndV(T t, Class<V> v) {
return objectToMapAndKV(t, String.class, v);
}
private static <T, K, V> Map<K, V> objectToMapAndKV(T t, Class<K> k, Class<V> v) {
return JSON.parseObject(JSON.toJSONString(t, JSONWriter.Feature.WriteMapNullValue), new TypeReference<Map<K, V>>(k, v) {});
}
public static void main(String[] args) {
MessageDto messageDto = new MessageDto();
messageDto.setName("test");
messageDto.setSex("man");
Map<String, String> stringStringMap = objectToMap(messageDto);
log.info("stringStringMap:{}",stringStringMap);
}
}
第二种方式
public static Map<String,Object> ObjectToMap(Object t){
Map<String,Object> resultMap = new HashMap<>(60);
try {
Class cls = Class.forName(t.getClass().toString().split(" ")[1]);
List<Field> fieldList = new ArrayList<Field>();
while(cls != null){
fieldList.addAll(Arrays.asList(cls .getDeclaredFields()));
cls = cls.getSuperclass();
}
for(Field f : fieldList){
f.setAccessible(true);
System.out.println(f.getName()+","+f.get(t));
resultMap.put(f.getName(),f.get(t));
}
} catch (ClassNotFoundException | IllegalAccessException e) {
e.printStackTrace();
}
return resultMap;
}
使用
public static void main(String[] args){
WxAppTextMessage message = new WxAppTextMessage();
message.setMsgType("text");
SimpleDateFormat sdf2=new SimpleDateFormat("yyyy-MM-dd");
message.setCreateTime(sdf2.format(new Date()));
message.setContent("测试!欢迎关注!");
message.setToUserName("toUserName");
message.setFromUserName("fromUserName");
System.err.println(message.getCreateTime());
Class classStr = message.getClass();
System.err.println("class: "+classStr.toString().split(" ")[1]);
Map<String,Object> resultMap = ObjectToMap(message);
System.err.println("resultMap: "+resultMap);
String xmlStr = XmlUtil.mapToXmlStr(resultMap,"xml");
System.err.println("xmlStr: "+xmlStr);
}
运行结果截图