Java代码实现Map和Object互转及Map和Json互转

所属分类: 软件编程 / java 阅读数: 56
收藏 0 赞 0 分享

先给大家介绍下map和object互相转换的代码。

具体代码如所示:

/** 
* 使用org.apache.commons.beanutils进行转换 
*/ 
class A { 
public static Object mapToObject(Map<String, Object> map, Class<?> beanClass) throws Exception { 
if (map == null) 
return null; 
Object obj = beanClass.newInstance(); 
org.apache.commons.beanutils.BeanUtils.populate(obj, map); 
return obj; 
} 
public static Map<?, ?> objectToMap(Object obj) { 
if(obj == null) 
return null; 
return new org.apache.commons.beanutils.BeanMap(obj); 
} 
} 
/** 
* 使用Introspector进行转换 
*/ 
class B { 
public static Object mapToObject(Map<String, Object> map, Class<?> beanClass) throws Exception { 
if (map == null) 
return null; 
Object obj = beanClass.newInstance(); 
BeanInfo beanInfo = Introspector.getBeanInfo(obj.getClass()); 
PropertyDescriptor[] propertyDescriptors = beanInfo.getPropertyDescriptors(); 
for (PropertyDescriptor property : propertyDescriptors) { 
Method setter = property.getWriteMethod(); 
if (setter != null) { 
setter.invoke(obj, map.get(property.getName())); 
} 
} 
return obj; 
} 
public static Map<String, Object> objectToMap(Object obj) throws Exception { 
if(obj == null) 
return null; 
Map<String, Object> map = new HashMap<String, Object>(); 
BeanInfo beanInfo = Introspector.getBeanInfo(obj.getClass()); 
PropertyDescriptor[] propertyDescriptors = beanInfo.getPropertyDescriptors(); 
for (PropertyDescriptor property : propertyDescriptors) { 
String key = property.getName(); 
if (key.compareToIgnoreCase("class") == 0) { 
continue; 
} 
Method getter = property.getReadMethod(); 
Object value = getter!=null ? getter.invoke(obj) : null; 
map.put(key, value); 
} 
return map; 
} 
} 
/** 
* 使用reflect进行转换 
*/ 
class C { 
public static Object mapToObject(Map<String, Object> map, Class<?> beanClass) throws Exception { 
if (map == null) 
return null; 
Object obj = beanClass.newInstance(); 
Field[] fields = obj.getClass().getDeclaredFields(); 
for (Field field : fields) { 
int mod = field.getModifiers(); 
if(Modifier.isStatic(mod) || Modifier.isFinal(mod)){ 
continue; 
} 
field.setAccessible(true); 
field.set(obj, map.get(field.getName())); 
} 
return obj; 
} 
public static Map<String, Object> objectToMap(Object obj) throws Exception { 
if(obj == null){ 
return null; 
} 
Map<String, Object> map = new HashMap<String, Object>(); 
Field[] declaredFields = obj.getClass().getDeclaredFields(); 
for (Field field : declaredFields) { 
field.setAccessible(true); 
map.put(field.getName(), field.get(obj)); 
} 
return map; 
} 
<p>} </p><p> 
</p><p>from:http://www.open-open.com/code/view/1423280939826</p> 

下面给大家介绍Map和json的互相转换

第一段代码

Map<String,Object> map = new HashMap<String,Object>();
map.put("method","json");
map.put("param",null);
map.put("time","2015-01-23 10:54:55");
ObjectMapper mapper = new ObjectMapper();
mapper.writeValueAsString(map);

第二段代码

public static void readJson2Map(String json) {
ObjectMapper objectMapper = new ObjectMapper();
try {
//将json字符串转成map结合解析出来,并打印(这里以解析成map为例)
Map<String, Map<String, Object>> maps = objectMapper.readValue(
json, Map.class);
System.out.println(maps.size());
Set<String> key = maps.keySet();
Iterator<String> iter = key.iterator();
while (iter.hasNext()) {
String field = iter.next();
System.out.println(field + ":" + maps.get(field));
}
} catch (JsonParseException e) {
e.printStackTrace();
} catch (JsonMappingException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
readJson2Map(json);

以上内容是小编给大家介绍的Java代码实现map和Object互转及Map和json的互转的相关知识,希望对大家有所帮助,如果大家想了解更多资讯敬请关注脚本之家网站,谢谢!

更多精彩内容其他人还在看

Java基于反射机制实现全部注解获取的方法示例

这篇文章主要介绍了Java基于反射机制实现全部注解获取的方法,结合实例形式分析了java反射机制获取注解的具体实现方法与操作注意事项,需要的朋友可以参考下
收藏 0 赞 0 分享

Java 信号量Semaphore的实现

这篇文章主要介绍了Java 信号量Semaphore的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
收藏 0 赞 0 分享

eclipse+maven+spring mvc项目基本搭建过程

这篇文章主要介绍了eclipse+maven+spring mvc项目基本搭建过程,本文图文并茂给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下
收藏 0 赞 0 分享

Spring boot集成swagger2生成接口文档的全过程

这篇文章主要给大家介绍了关于Spring boot集成swagger2生成接口文档的相关资料,文中通过示例代码介绍的非常详细,对大家学习或者使用Spring boot具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧
收藏 0 赞 0 分享

Java冒泡排序法和选择排序法的实现

这篇文章主要介绍了Java冒泡排序法和选择排序法的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
收藏 0 赞 0 分享

Spring Cloud Alibaba教程之Sentinel的使用

这篇文章主要介绍了Spring Cloud Alibaba教程之Sentinel的使用,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
收藏 0 赞 0 分享

Josephus环的四种解法(约瑟夫环)基于java详解

这篇文章主要介绍了Josephus环的四种解法(约瑟夫环)基于java详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
收藏 0 赞 0 分享

Java继承Thread类创建线程类示例

这篇文章主要介绍了Java继承Thread类创建线程类,结合实例形式分析了java线程操作相关使用技巧与注意事项,需要的朋友可以参考下
收藏 0 赞 0 分享

Java使用Callable和Future创建线程操作示例

这篇文章主要介绍了Java使用Callable和Future创建线程操作,结合实例形式分析了java使用Callable接口和Future类创建线程的相关操作技巧与注意事项,需要的朋友可以参考下
收藏 0 赞 0 分享

springBoot使用JdbcTemplate代码实例

这篇文章主要介绍了springBoot使用JdbcTemplate代码实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
收藏 0 赞 0 分享
查看更多