JSONUtils

2023-11-20

package com.xiolift.mdm.common.util;

import com.alibaba.druid.util.StringUtils;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;

import java.util.HashMap;
import java.util.Map;

public class JSONUtils<T> {
    /**
     * Bean对象转JSON
     * 
     * @param object
     * @param dataFormatString
     * @return
     */
    public static String beanToJson(Object object, String dataFormatString) {
        if (object != null) {
            if (StringUtils.isEmpty(dataFormatString)) {
                return JSONObject.toJSONString(object);
            }
            return JSON.toJSONStringWithDateFormat(object, dataFormatString);
        } else {
            return null;
        }
    }

    /**
     * Bean对象转JSON
     * 
     * @param object
     * @return
     */
    public static String beanToJson(Object object) {
        if (object != null) {
            return JSON.toJSONString(object);
        } else {
            return null;
		}
	}

	/**
	 * String转JSON字符串
	 * 
	 * @param key
	 * @param value
	 * @return
	 */
	public static String stringToJsonByFastjson(String key, String value) {
		if (StringUtils.isEmpty(key) || StringUtils.isEmpty(value)) {
			return null;
		}
		Map<String, String> map = new HashMap<String, String>(16);
		map.put(key, value);
		return beanToJson(map, null);
	}

	/**
	 * 将json字符串转换成对象
	 * 
	 * @param json
	 * @param clazz
	 * @return
	 */
	public static Object jsonToBean(String json, Object clazz) {
		if (StringUtils.isEmpty(json) || clazz == null) {
			return null;
		}
		return JSON.parseObject(json, clazz.getClass());
	}

	/**
	 * json字符串转map
	 * 
	 * @param json
	 * @return
	 */
	@SuppressWarnings("unchecked")
	public static Map<String, Object> jsonToMap(String json) {
		if (StringUtils.isEmpty(json)) {
			return null;
		}
		return JSON.parseObject(json, Map.class);
	}

	public static JSONObject mapToJson(Map<String, Object> map) {
		String data = JSON.toJSONString(map);
		return JSON.parseObject(data);
	}

	/**
	 * map中取key对应的value
	 * @param map
	 * @param key
	 * @return
	 */
	public String mapToString(Map<String, Object> map, String key) {
		JSONObject jsonObject = mapToJson(map);
		return jsonObject.getString(key);
	}
	/**
	 * map中取类对象
	 * @param map
	 * @param clazz
	 * @param key
	 * @param <T>
	 * @return
	 */
	public static <T> T mapToObject(Map<String, Object> map, Class<T> clazz, String key) {
		T t = null;
		JSONObject jsonObject = mapToJson(map);
		JSONObject object = jsonObject.getJSONObject(key);
		t = object.toJavaObject(clazz);
		return t;
	}

//  调用方法
//	Subject subject = jsonUtil.mapToObject(map, Subject.class, "subject");
//	//获取List数组
//	List<Progress> progressList = jsonUtil.mapToList(map, Progress.class, "progress");
//	//获取key对应的值
//	String specid = jsonUtil.mapToString(map, "specid");



}

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

JSONUtils 的相关文章

随机推荐

  • hosts文件有多余条目导致dbconsole配置不成功

    1 修改密码alter user system identified by oracle alter user sys identified by oracle alter user dbsnmp identified by oracle
  • 【笔记】 感受野与权值共享 摄像头标定 相机坐标与世界坐标

    1 卷积神经网络的局部感受野 卷积神经网络的神经元之间的连接模式类似于大脑视觉皮层组织 个体皮层神经元仅在被称为感受野的视野受限区域中对刺激做出反应 局部感受野就是卷积神经网络每一层输出的特征图 Feature Map 上的像素点在原始图像
  • ros安装qt以及编译ros功能包

    2 添加qt到环境变量 sudo nano usr bin qtcreator bin sh export QT HOME home kexue Qt5 9 9 Tools QtCreator bin QT HOME qtcreator s
  • Java线程(Thread)生命周期的6种状态

    当线程被创建并启动以后 它既不是一启动就进入了执行状态 也不是一直处于执行状态 在线程的生命周期中 可能处于不同的状态 java lang Thread State 列举出了这6种线程状态 线程状态 导致状态发生条件 New 新建 线程刚被
  • tcp粘包和拆包的处理方案

    产生tcp粘包和拆包的原因 我们知道tcp是以流动的方式传输数据 传输的最小单位为一个报文段 segment tcp Header中有个Options标识位 常见的标识为mss Maximum Segment Size最大消息长度 指的是
  • 计算某字符出现次数

    描述 写出一个程序 接受一个由字母 数字和空格组成的字符串 和一个字符 然后输出输入字符串中该字符的出现次数 不区分大小写字母 数据范围 1 n 1000 1 le n le 1000 1 n 1000 输入描述 第一行输入一个由字母和数字
  • 深度学习系列37:CLIP模型

    1 模型说明 含义 CLIP Contrastive Language Image Pre training git地址 https github com openai CLIP paper https arxiv org abs 2103
  • SpringCloud使用Zookeeper作为服务注册发现中心

    本篇文章主要记录SpringCloud使用Zookeeper作为服务注册发现中心 通过服务提供者和消费者为例 来真正掌握zk注册中心 目录 一 搭建服务提供者 1 创建cloud provider payment8004项目 2 修改配置
  • BCrypt密码加密的简单使用

    一 BCrypt基础 在一个项目中 只要涉及用户的登陆注册 就涉及到用户密码的保护 用户的密码存在数据库是对管理员是透明的 所以为了防止管理员泄露密码 提高用户密码的安全性 我们通常会对用户密码进行加密后再存入数据库 目前MD5与Bcryp
  • 微信小程序瀑布流布局

  • Spring Boot:从入门到实践的全面指南

    文章目录 1 Spring Boot简介及特性 1 1 简介 什么是Spring Boot 1 2 特性 Spring Boot的优势与特点 1 3 四大核心 Spring Boot的核心组成 2 Spring Boot入门案例 2 1 S
  • 重启CDH服务

    找到cm的目录 cd opt cm 5 13 2 etc init d 查看sever状态 cloudera scm server status 重启server cloudera scm server restart 再次查看sever状
  • Micropython开发篇三--基于F411 CE的移植编译

    Micropython开发篇三 基于F411 CE的移植编译 最近在学操作系统 RTOS与Linux 对Micropython有些新的认知 回头又复习了一下Micropython 简直要不要这么优秀 希望通过这篇文章能带给大家不一样的Mic
  • Python - 函数注解

    Python3提供一种语法 用于为函数声明中的参数和返回值附加元数据 或者也可以称之为注释 def my function Something about your function pass 文档注释可以通过下面这种方式查看 print
  • MyBatis高级查询:一对多映射collection集合实现机构-用户-角色-菜单三级嵌套查询

    学习自MyBatis从入门到精通 嵌套查询 会执行额外的SQL语句 团队网站的结构关系我是做成了机构用户角色菜单三层嵌套查询 今天一天进行了实现 遇到的错误真的很多 我们知道association collection关联的嵌套查询这种方式
  • TCP协议、VLSM、CIDR思维导图

    ICMP 网络层协议 用来在网络设备间传递各种差错 控制 查询等信息 对于收集各种网络信息 诊断和排除各种网络故障
  • CocosCreator列表scrollview滑动速度的修改,鼠标滚动速度修改

    由于cocos creator 在pc端 使用scrollview 鼠标滚动速度太慢 原文地址 CocosCreator列表滑动速度的修改 简书CocosCreator列表滑动速度的修改 简书引擎版本 2 2 2 之后升级的2 4 0直接可
  • Android发送POST网络请求

    参考链接 Android 网络请求 网络请求 Okhttp 51CTO博客 android 网络请求 项目中需要通过发送网络请求获取需要显示的数据内容 请求地址和requestbody如上图所示 网络请求用 implementation c
  • Java顺序表

    1 顺序表的定义 顺序表是用物理地址连续存储单元依次存储元素的线性数据结构 一般底层采用数组存储 其中Arraylist也是一个动态修改的数组 于此大致相同 在计算机科学中 数组是由一组元素 值或变量 组成的数据结构 每个元素有至少一个索引
  • JSONUtils

    package com xiolift mdm common util import com alibaba druid util StringUtils import com alibaba fastjson JSON import co