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}

以上例子仅供参考,实际应用中根据需求调整。

阅读剩余 75%

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Java代码实现Map和Object互转及Map和Json互转 - Python技术站

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

相关文章

  • 详解记录Java Log的几种方式

    详解记录Java Log的几种方式 在Java应用程序中,日志记录是非常重要的,它提供了一种检测应用程序中可能出现的问题的方法,也为开发人员调试代码提供了可靠的依据。本文将详细讲解Java日志记录的几种方式、优缺点以及示例。 系统输出 Java中最简单的日志记录机制就是通过系统输出来打印日志消息。我们可以利用Java标准库中的System.out.print…

    Java 2023年5月26日
    00
  • Java System类详解_动力节点Java学院整理

    Java System类详解_动力节点Java学院整理 什么是System类? System类是Java程序中提供的一个包含了一些系统级别的属性和控制操作的类。在Java程序中,我们可以使用System类来读取和设置系统的属性、读写标准的输入流、创建和操纵java虚拟机和Java程序等。 System类中常见的方法 1. System.getProperty…

    Java 2023年5月24日
    00
  • 详解SpringBoot中的统一异常处理

    下面我将为你详细讲解“详解SpringBoot中的统一异常处理”的完整攻略。 什么是SpringBoot中的统一异常处理 在SpringBoot中,我们经常需要对抛出的异常进行统一处理。如果我们每个地方都去捕捉异常,并进行相应处理,那么代码量会非常大。此时,我们可以使用SpringBoot中的统一异常处理,将所有异常集中处理,大大减少了代码量,也方便了我们对…

    Java 2023年5月27日
    00
  • Java Druid连接池与Apache的DBUtils使用教程

    Java Druid连接池与Apache的DBUtils使用教程 简介 Java 连接池是一种在应用程序中重用数据库连接的技术,它能够有效地提高应用程序的性能和资源利用率。Druid 是阿里巴巴开源的高性能 Java 数据库连接池库,提供了比常见开源数据库连接池更为丰富的功能。DBUtils 是 Apache 开源的轻量级 JDBC 工具库,它提供了简单方便…

    Java 2023年6月16日
    00
  • 常见的Java加密算法有哪些?

    常见的Java加密算法有以下几种:对称加密算法、非对称加密算法和散列算法。 对称加密算法 对称加密算法是指发送方和接收方使用相同的密钥对数据进行加密和解密。常见的对称加密算法有DES、3DES、AES、Blowfish等。 以AES算法为例,以下为使用步骤: 1)生成密钥 SecretKey secretKey = KeyGenerator.getInsta…

    Java 2023年5月11日
    00
  • 一天吃透SpringMVC面试八股文

    说说你对 SpringMVC 的理解 SpringMVC是一种基于 Java 的实现MVC设计模型的请求驱动类型的轻量级Web框架,属于Spring框架的一个模块。 它通过一套注解,让一个简单的Java类成为处理请求的控制器,而无须实现任何接口。同时它还支持RESTful编程风格的请求。 什么是MVC模式? MVC的全名是Model View Control…

    Java 2023年4月22日
    00
  • Filter、Servlet、Listener的学习_动力节点Java学院整理

    Filter、Servlet、Listener的学习攻略 一、什么是Filter Filter又称过滤器,是Java Web中一种很重要的组件。Filter的主要作用是在 Servlet容器的请求与资源(例如 Servlet、JSP等)之间加一个拦截器,对请求进行预处理,也可以对响应做出后处理。 Filter是Servlet API中最实用的技术之一,它非常…

    Java 2023年6月15日
    00
  • java mybatis框架配置详解

    Java MyBatis框架配置详解 1. 简介 MyBatis是一个用Java编写的开源ORM(object relational mapping)框架。它通过XML或注解方式向数据库发送SQL语句,执行相应的操作,并将结果映射到Java对象中。 MyBatis具有以下优点: 灵活性较高,可以使用纯SQL,减少了ORM框架带来的性能压力。 可以进行批处理,…

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