<Java工具类>json字符串、List Map,List 对象转换为相应的JavaBean对象

这篇具有很好参考价值的文章主要介绍了<Java工具类>json字符串、List Map,List 对象转换为相应的JavaBean对象。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

依赖:

		<dependency>
            <groupId>com.baomidou</groupId>
            <artifactId>mybatis-plus-boot-starter</artifactId>
            <version>3.1.1</version>
        </dependency>
        <dependency>
            <groupId>commons-beanutils</groupId>
            <artifactId>commons-beanutils</artifactId>
            <version>1.9.3</version>
        </dependency>
        <dependency>
		  	<groupId>com.fasterxml.jackson.core</groupId>
		  	<artifactId>jackson-annotations</artifactId>
		  	<version>2.9.7</version>
		</dependency>
		<dependency>
		  	<groupId>com.fasterxml.jackson.core</groupId>
		  	<artifactId>jackson-databind</artifactId>
		  	<version>2.9.8</version>
		</dependency>
		<dependency>
		  	<groupId>com.fasterxml.jackson.core</groupId>
		  	<artifactId>jackson-core</artifactId>
		  	<version>2.9.8</version>
		</dependency>

工具类(直接上代码):

package com.itheima.common.util;

import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
import com.fasterxml.jackson.databind.ObjectMapper;
import org.apache.commons.beanutils.PropertyUtils;

import java.beans.BeanInfo;
import java.beans.Introspector;
import java.beans.PropertyDescriptor;
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
import java.util.*;

	/**
     * 。
     * (1) 使用泛型方法:把json字符串转换为相应的JavaBean对象;
     *     转换为普通JavaBean:readValue(json,Student.class);
     * (2) List Map转换List 对象:如List<Student>,将第二个参数传递为Student;
     * (3) List 对象转换List Map:
     *     [].class.然后使用Arrays.asList();方法把得到的数组转换为特定类型的List;
     *
     * @param jsonStr
     * @param valueType
     * @return
     * 
     */

public final class JsonUtils {

    private static ObjectMapper objectMapper;

    /**
     * (1) 使用泛型方法:把json字符串转换为相应的JavaBean对象;
     *     转换为普通JavaBean:readValue(json,Student.class);
     */
    public static <T> T readValue(String jsonStr, Class<T> valueType) throws Exception {
        if (objectMapper == null) {
            objectMapper = new ObjectMapper();
        }
        return objectMapper.readValue(jsonStr, valueType);
    }

    /**
     *(2).List Map转换List 对象:如List<Student>,将第二个参数传递为Student对象;
     *    map转换为bean
     */
    public static Object mapToObject(Map<String, String> 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;
    }
	
	/**
	 *(3).List 对象转换List Map:
	 *    [].class.然后使用Arrays.asList();方法把得到的数组转换为特定类型的List;
     *    bean转换为map
     */
    public static <T> List<Map<String, Object>> listConvert(List<T> list){
        List<Map<String, Object>> list_map = new ArrayList<Map<String, Object>>();
        if (CollectionUtils.isNotEmpty(list)) {
            list.forEach(item ->{
                Map<String, Object> map = null;
                try {
                    map = PropertyUtils.describe(item);
                } catch (IllegalAccessException e) {
                    throw new RuntimeException(e);
                } catch (InvocationTargetException e) {
                    throw new RuntimeException(e);
                } catch (NoSuchMethodException e) {
                    throw new RuntimeException(e);
                }
                list_map.add(map);
            });
        }
        return list_map;
    }
}

使用场景:
(1).使用泛型方法:把json字符串转换为相应的JavaBean对象 ;
一般用于:Controller层:
例如:


	/**
     * 保存:表单数据(保存和修改功能)
     * 权限-管理员&专员
     *
     * @param param
     * @return
     */
    @PostMapping(value = "/saveFormData")
    @AuthInterceptor("mag:XXlist:saveFormData")
    public Result saveFormData(HttpServletRequest request,@RequestBody String param) {
        try {
            Map<String, Object> paramMap = JsonUtils.readValue(param, Map.class);
            String refreshToken = request.getHeader("refreshToken");
            Map<String, Object> current= tokenCache.getCurrentUsers(refreshToken);
            paramMap.put("createdNo",current.get("pmNo"));
            paramMap.put("createdBy",current.get("pmName"));
            return ListService.saveFormData(paramMap);
        } catch (Exception e) {
            log.error("XXController saveFormData is error===:" + e.getMessage(), e);
            return Result.failure("表单数据保存失败!");
        }
    }
    

(2).List Map转换List 对象:如List,将第二个参数传递为Student对象;


	public Result addTask(@RequestBody String param) {
        try {
            List<Map<String, String>> params = JsonUtils.readValue(param, List.class);
            //map转化为对象
            StudentVo studentVo = (StudentVo)
                    JsonUtils.mapToObject(params.get(0), StudentVo.class);
            //代码省略......        
            return Result.success().result("任务添加成功");
        } catch (Exception e) {
            log.error("===XXController addTask is error===:" + e.getMessage(), e);
            return Result.failure(e.getMessage());
        }
    }
    

(3).List 对象转换List Map:文章来源地址https://www.toymoban.com/news/detail-528037.html


	private List<Map<String, Object>> getHeaderssData() {
        QueryWrapper<ListFormTableVo> qw = new QueryWrapper<ListFormTableVo>();
        qw.orderByAsc("id");
        List<ListFormTableVo> list = ListFormTemplateMapper.selectList(qw);
        //List对象转化为List Map 
        List<Map<String, Object>> res = JsonUtils.listConvert(list);
        res = res.stream().filter(e -> (!e.get("headerField").equals("pmNo"))).
                filter(e -> (!e.get("headerField").equals("pmName"))).
                collect(Collectors.toList());
        return res;
    }
    

到了这里,关于<Java工具类>json字符串、List Map,List 对象转换为相应的JavaBean对象的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Java-json相关转换,JSONObject与实体类/map互转、List/List<map>和JSONArray互转、获取JSONObject中的key value、字符串String转换等

    博客背景是Java开发。json相关的转换、取值等在日常开发中经常使用,但有时候还是会忘记or遇到些奇奇怪怪的问题。以此记录,提醒自己~不定期更新~ 实体类和JSONObject互转 Map和JSONObject互转 String转JSONObject 实体类转JSON字符串时不过滤NULL空值 获取JSONObject中的key value List和

    2024年02月12日
    浏览(81)
  • alibaba.fastjson的使用(三)-- Map、List ==》JSON字符串

    目录 1.使用到的方法为: 2. Map转JSON字符串 3. List转JSON字符串

    2024年02月08日
    浏览(46)
  • 根据Json字符串设计对应的Java对象(使用fastjson和JSONUtil工具类验证)

    记录 :467 场景 :根据Json字符串设计对应的Java对象。使用fastjson的JSON和hutool的JSONUtil将Java对象转换为Json字符串验证。 版本 :JDK 1.8,Spring Boot 2.6.3,fastjson-2.0.33,hutool-all-5.8.12。 1.Json字符串 根据如下Json字符串设计Java对象。 2.对应Java对象 2.1Java对象ProvinceDto (1)示例代码 (2)解析代

    2024年02月11日
    浏览(56)
  • Java中list转json字符串

    例子: 有一个实体类StudentInfo 放在一个List中,为List infoList; 现在需要把这个infoList 以字符串的形式存起来,示例如下: 下面示例代码为将入参infoList转为JSON字符串输出 下面示例代码为将JSON字符串转为List

    2024年02月09日
    浏览(51)
  • Java中 List 和 JSON字符串之间的相互转换

    Java中 List 和 JSON字符串之间的相互转换 List 转 JSON 字符串 前端js将后端的json字符串转对象 JSON字符串转List

    2024年04月23日
    浏览(72)
  • Java 字符串类型的JSON数组转List<Object>或 List<实体类>

    1.依赖 2.代码 3.JSON数组 [     {         \\\"_object_version\\\": 4,         \\\"updateAuthorizers\\\": [         ],         \\\"RELATED_POOL\\\": \\\"网络云-大区金华可信11\\\",         \\\"CLOUD\\\": \\\"大区网络云\\\",         \\\"modifier\\\": \\\"easyops\\\",           },     {         \\\"_object_version\\\": 4,         \\\"updateAuthorizers\\\": [    

    2024年02月14日
    浏览(58)
  • java对象与Json字符串的相互转换

    文章目录 1.Json对象转换为java 对象 2. Java对象转换JSON 1.Json对象转换为java 对象 导入jackson的相关jar包 创建Jackson核心对象 ObjectMapper 调用ObjectMapper的相关方法进行转换 2. Java对象转换JSON 常见的解析器:Jsonlib,Gson,fastjson,jackson 1.导入jackson的相关jar包 2.创建Jackson核心对象 Obj

    2024年02月09日
    浏览(59)
  • java8 list对象string字符串求和

    Java 8 中可以使用 Stream API 和 reduce() 方法来对 List 中的字符串进行求和。 举个例子,假设你有一个 List 叫做 \\\"numbers\\\",你可以这样求和: 或者这样求和 这样得到的结果就是 \\\"12345\\\"。 在这个例子中,我们使用 reduce() 方法对 List 中的所有字符串进行求和,其中第一个参数是初始值

    2024年02月15日
    浏览(58)
  • java中对象转json字符串的常用方式

    1.使用Jackson库: Jackson是一个常用且功能强大的Java库,用于处理JSON数据。下面是使用Jackson将对象转换为JSON字符串的示例: 需要依赖: 2.使用Gson库: Gson是Google提供的一个Java库,它可以处理JSON数据的序列化和反序列化。以下是使用Gson将对象转换为JSON字符串的示例 相关依赖

    2024年02月07日
    浏览(48)
  • Java 解析多层嵌套json数据及json字符串与对象的相互转换

    本文主要介绍java解析多层嵌套json数据以及字符串与JSON对象之间的相互转换,包括:json字符串的取值,json对象与字符串的相互转换,字符串转化为java对象,字符串转化为javaList列表等。 提示:以下是本篇文章正文内容,下面案例可供参考 数据格式:JSON实际上就是键值对(

    2024年02月04日
    浏览(63)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包