将Java中的Map和Object进行互转以及Map和Json进行互转是Java开发中的常见需求。接下来,我会详细讲解Java代码实现Map和Object互转及Map和Json互转的完整攻略,并提供两个示例来说明。
Map和Object互转
Map和Object互转是指将一个Map对象转换成一个JavaBean对象,或将一个JavaBean对象转换成一个Map对象。这里使用了Java的反射机制来实现Map和Object的互转。具体步骤如下:
- 定义JavaBean对象,例如:
public class User {
private String username;
private Integer age;
// getter、setter方法省略
}
- 定义Map对象,并为其键值对赋值,例如:
Map<String, Object> map = new HashMap<>();
map.put("username", "Tom");
map.put("age", 18);
- 将Map对象转换成JavaBean对象,例如:
User user = new User();
BeanUtils.populate(user, map);
其中,BeanUtils 是Apache Commons BeanUtils库提供的一个类,通过BeanUtils.populate()方法可以将Map对象的键值对填充到JavaBean对象中。
- 将JavaBean对象转换成Map对象,例如:
Map<String, Object> map2 = new HashMap<>();
BeanUtils.describe(user).forEach((key, value) -> {
if (value != null && !key.equals("class")) {
map2.put(key, value);
}
});
其中,BeanUtils.describe()方法可以将JavaBean对象转换为一个Map对象,其中键为JavaBean对象的属性名,值为JavaBean对象属性的值。这里需要注意,由于BeanUtils.describe()转换成的Map对象中还包含了一个"class"键值对,需要手动去掉。
以上就是Map和Object互转的完整攻略,下面通过示例进行说明。
示例一
将Map对象转换成JavaBean对象,例如:
import org.apache.commons.beanutils.BeanUtils;
import java.lang.reflect.InvocationTargetException;
import java.util.HashMap;
import java.util.Map;
public class MapToObjectDemo {
public static void main(String[] args) throws InvocationTargetException, IllegalAccessException {
Map<String, Object> map = new HashMap<>();
map.put("username", "Tom");
map.put("age", 18);
User user = new User();
BeanUtils.populate(user, map);
System.out.println(user.getUsername() + ", " + user.getAge());
}
}
输出结果为:
Tom, 18
示例二
将JavaBean对象转换成Map对象,例如:
import org.apache.commons.beanutils.BeanUtils;
import java.lang.reflect.InvocationTargetException;
import java.util.HashMap;
import java.util.Map;
public class ObjectToMapDemo {
public static void main(String[] args) throws InvocationTargetException, IllegalAccessException {
User user = new User();
user.setUsername("Tom");
user.setAge(18);
Map<String, Object> map = new HashMap<>();
BeanUtils.describe(user).forEach((key, value) -> {
if (value != null && !key.equals("class")) {
map.put(key, value);
}
});
System.out.println(map);
}
}
输出结果为:
{username=Tom, age=18}
Map和Json互转
Map和Json互转是指将一个Map对象转换成一个Json对象,或将一个Json对象转换成一个Map对象。这里使用了Json库来实现Map和Json的互转,推荐使用阿里巴巴的fastjson库。具体步骤如下:
- 导入fastjson依赖,如果使用Maven,则在pom.xml中添加以下依赖:
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
<version>1.2.72</version>
</dependency>
- 将Map对象转换成Json字符串,例如:
Map<String, Object> map = new HashMap<>();
map.put("username", "Tom");
map.put("age", 18);
String json = JSON.toJSONString(map);
其中,JSON.toJSONString()方法可以将JavaBean、Map对象等转换成Json字符串。
- 将Json字符串转换成Map对象,例如:
Map<String, Object> map2 = JSON.parseObject(json, new TypeReference<Map<String, Object>>() {});
其中,JSON.parseObject()方法可以将Json字符串解析成JavaBean、Map对象等。需要注意的是,由于fastjson不支持直接将Json字符串转换成Map对象,因此需要使用TypeReference指定Map对象的类型。
以上就是Map和Json互转的完整攻略,下面通过示例进行说明。
示例一
将Map对象转换成Json字符串,例如:
import com.alibaba.fastjson.JSON;
import java.util.HashMap;
import java.util.Map;
public class MapToJsonDemo {
public static void main(String[] args) {
Map<String, Object> map = new HashMap<>();
map.put("username", "Tom");
map.put("age", 18);
String json = JSON.toJSONString(map);
System.out.println(json);
}
}
输出结果为:
{"username":"Tom","age":18}
示例二
将Json字符串转换成Map对象,例如:
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.TypeReference;
import java.util.Map;
public class JsonToMapDemo {
public static void main(String[] args) {
String json = "{\"username\":\"Tom\",\"age\":18}";
Map<String, Object> map = JSON.parseObject(json, new TypeReference<Map<String, Object>>() {});
System.out.println(map);
}
}
输出结果为:
{username=Tom, age=18}
以上例子仅供参考,实际应用中根据需求调整。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Java代码实现Map和Object互转及Map和Json互转 - Python技术站