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 split函数拆分后变成null问题解决方案

    Java中的split函数用于将字符串根据指定字符分割成多个子字符串。然而,有时候在使用split函数时,会出现拆分之后子字符串变成null的问题,本篇文档将提供解决方案。 问题分析 在使用split函数时,使用的分割符在字符串的开头或结尾时,会导致split函数将空字符串分割出来。此时,split函数会把空字符串转换为null,导致出现这个问题。 解决方案…

    Java 2023年5月26日
    00
  • Java计算代码段执行时间的详细过程

    计算代码段执行时间在Java中非常常见,我们可以通过多种方式来实现。下面我将向您详细介绍如何使用Java代码计算代码段执行时间的完整攻略: 步骤一:编写需要计算时间的代码段 首先,我们需要编写需要计算时间的代码段。作为例子,我们假设我们需要计算一个数组排序的时间。这是我们的代码段示例: import java.util.Arrays; public clas…

    Java 2023年5月20日
    00
  • 详解Springboot Oauth2 Server搭建Oauth2认证服务

    详解SpringBoot Oauth2 Server搭建Oauth2认证服务 1. 概述 OAuth,全称是“开放授权”,是一种用于授权的开放标准。在Web应用中,OAuth用于授权用户第三方应用访问资源的操作,比如在不需要输入用户名和密码的情况下授权第三方应用获取用户的个人信息。OAuth提供了一个安全的、开放的方式实现对用户的授权。 SpringBoot…

    Java 2023年5月20日
    00
  • Spring框架生成图片验证码实例

    让我来详细讲解一下“Spring框架生成图片验证码实例”的完整攻略。 1. 环境搭建 首先,我们需要搭建好Spring MVC环境,这里就不做过多的讲解了。如果你还不熟悉Spring MVC的环境搭建,可以先学习一下相关的教程,在此不再赘述。 2. 添加依赖 在我们项目的pom.xml文件中,我们需要添加以下依赖: <!– SpringSecurit…

    Java 2023年6月15日
    00
  • set_include_path和get_include_path使用及注意事项

    set_include_path和get_include_path是PHP语言中用于设置和获取当前PHP文件包含路径的函数。 set_include_path函数 set_include_path函数用于设置当前PHP文件的包含路径。其语法如下: set_include_path ( string $new_include_path ): string|fa…

    Java 2023年6月15日
    00
  • 使用CXF和Jersey框架来进行Java的WebService编程

    使用CXF和Jersey框架进行Java的WebService编程步骤如下: 配置pom.xml文件,添加CXF和Jersey框架相关的依赖。 “` org.apache.cxf cxf-bundle-jaxrs 3.3.6 org.glassfish.jersey.core jersey-server 2.30 org.glassfish.jersey.…

    Java 2023年5月31日
    00
  • Angualrjs 表单验证的两种方式(失去焦点验证和点击提交验证)

    AngularJS提供了丰富的表单验证指令,可以轻松实现对用户输入的校验,以保证数据的准确性和完整性。 失去焦点验证 AngularJS通过ng-blur指令可以很方便地实现失去焦点时的表单验证。具体步骤如下: 在HTML表单元素上添加相应的验证指令,如ng-pattern、ng-minlength、ng-maxlength等; 添加一个提示信息的元素或指令…

    Java 2023年6月15日
    00
  • SpringBoot入口类和@SpringBootApplication讲解

    Spring Boot是Spring框架的一个扩展,旨在通过提供默认的配置和简化特定的Spring应用程序的配置来减少初始配置工作。 Spring Boot提供了一个非常简单的方式来开发独立的,生产级别的Spring应用程序。 Spring Boot的核心是应用程序的入口类,注解@SpringBootApplication是主要的组件解析器。 SpringB…

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