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

Java中的Map和Object进行互转以及Map和Json进行互转是Java开发中的常见需求。接下来,我会详细讲解Java代码实现Map和Object互转及Map和Json互转的完整攻略,并提供两个示例来说明。

Map和Object互转

Map和Object互转是指将一个Map对象转换成一个JavaBean对象,或将一个JavaBean对象转换成一个Map对象。这里使用了Java的反射机制来实现Map和Object的互转。具体步骤如下:

  1. 定义JavaBean对象,例如:
public class User {
    private String username;
    private Integer age;

    // getter、setter方法省略
}
  1. 定义Map对象,并为其键值对赋值,例如:
Map<String, Object> map = new HashMap<>();
map.put("username", "Tom");
map.put("age", 18);
  1. 将Map对象转换成JavaBean对象,例如:
User user = new User();
BeanUtils.populate(user, map);

其中,BeanUtils 是Apache Commons BeanUtils库提供的一个类,通过BeanUtils.populate()方法可以将Map对象的键值对填充到JavaBean对象中。

  1. 将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库。具体步骤如下:

  1. 导入fastjson依赖,如果使用Maven,则在pom.xml中添加以下依赖:
<dependency>
    <groupId>com.alibaba</groupId>
    <artifactId>fastjson</artifactId>
    <version>1.2.72</version>
</dependency>
  1. 将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字符串。

  1. 将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技术站

(0)
上一篇 2023年5月26日
下一篇 2023年5月26日

相关文章

  • java的Hibernate框架报错“NonUniqueObjectException”的原因和解决方法

    当使用Hibernate框架时,可能会遇到“NonUniqueObjectException”错误。这个错误通常是由于以下原因之一引起的: 多个实体对象具有相同的标识符:如果您的多个实体对象具有相同的标识符,则可能会出现此错误。在这种情况下,需要检查您的实体对象并确保它们具有唯一的标识符。 会话中存在多个实体对象:如果您的会话中存在多个实体对象,则可能会出现…

    Java 2023年5月4日
    00
  • Spring系列中的beanFactory与ApplicationContext

    当提到Spring框架的IoC容器时,很容易想到beanFactory和ApplicationContext,这两者都属于Spring框架中IoC容器的范畴。本篇文章将详细讲解beanFactory和ApplicationContext的特点,优缺点以及使用场景。 BeanFactory BeanFactory是Spring框架最基本的IoC容器,提供了一种…

    Java 2023年5月19日
    00
  • springMVC拦截器HandlerInterceptor用法代码示例

    下面详细讲解一下“springMVC拦截器HandlerInterceptor用法代码示例”的完整攻略。 什么是HandlerInterceptor? HandlerInterceptor是Spring MVC框架的拦截器,用于在controller处理请求之前和之后进行一些额外的处理。HandlerInterceptor是一个接口,需要自定义实现它,并将其…

    Java 2023年5月31日
    00
  • Java中构造方法set/get和toString的使用详解

    “Java中构造方法set/get和toString的使用详解”即是一篇文章,下面是这篇文章的完整攻略。 Java中构造方法set/get和toString的使用详解 构造方法 在Java中,构造方法是用于创建对象时进行初始化的方法,其名称必须与名称相同。 public class Person { private String name; private …

    Java 2023年5月26日
    00
  • PHP,ASP.JAVA,JAVA代码格式化工具整理

    PHP, ASP, JAVA 代码格式化工具整理 在编写 PHP、ASP、Java 代码时,代码的格式化是非常重要的。良好的代码格式化可以使代码易于阅读和维护,提高代码的可读性和代码质量。本文介绍几个可以用来格式化 PHP、ASP、Java 代码的工具,并详细讲解它们的使用方法。 1. PHP 代码格式化工具 1.1. PHP_Beauty PHP_Beau…

    Java 2023年6月16日
    00
  • JavaWeb开发之【Tomcat 环境配置】MyEclipse+IDEA配置教程

    JavaWeb开发之【Tomcat 环境配置】MyEclipse+IDEA配置教程 环境准备 在进行Tomcat环境配置之前,需要先准备好以下环境: JDK: Java Development Kit,Java开发工具包,需要安装JDK才能进行Java语言的开发和编译。 Tomcat:一个开源的Web服务器和Servlet容器,支持Java Servlet和…

    Java 2023年5月20日
    00
  • JAVA中String介绍及常见面试题小结

    来一份JAVA中String介绍及常见面试题小结的完整攻略吧。 JAVA中String介绍及常见面试题小结 String是什么 String是JAVA中的一个类,代表字符串类型。字符串就是由0个或多个字符组成的有序字符序列,JAVA中通过String类型来表示字符串。 String的特点 不可变性 String对象一旦被创建,便不能被修改。因此,每个字符串对…

    Java 2023年5月27日
    00
  • Log4j详细使用教程_动力节点Java学院整理

    Log4j详细使用教程 什么是Log4j? Log4j是一个用于记录程序运行过程中产生的日志的Java库。它为开发者提供了一种非常灵活的记录日志的方式,可以把日志输出到控制台、文件甚至是数据库中,而且可以设置不同级别的日志记录,从而更加精确地记录不同类型的日志信息。使用Log4j可以帮助你更好地了解程序的运行情况,提高调试效率。 如何使用Log4j? 步骤一…

    Java 2023年5月27日
    00
合作推广
合作推广
分享本页
返回顶部