关于JSONObject转实体和普通方法(通用)转实体

Java Map、JSONObject、实体类互转 阅读详情

JSONObject转实体

JSONObject主要分为net.sf.json.JSONObject和com.alibaba.fastjson.JSONObject。
其实这两个JSONObject常用的功能都有,但是用法是不一样的。

JSON字符串使用net.JSONObject转实体主要用到的方法:

Student bean = (Student ) JSONObject.toBean(JSONObject.fromObject(o), Student .class);

JSON字符串使用fastjson转实体用的的方法:

 //JSON字符串转换成Java对象
Student student1 = JSONObject.parseObject(stuString, Student.class);

普通方法将JSON字符串转为java对象(通用)

只需要将下列代码直接复制到一个工具类中(我是复制到我的工具类Utils中),然后直接调用就可以转为想要的对象
例:
Student student= Utils.jsonToEntity(object, Student .class);
这是一个通用的方法。

	public static final char UNDERLINE_CHAR = '_';

	/**
     * 驼峰转下划线大写
     *
     * @param camelStr
     * @return
     * @Author xlq
     */
    public static String camelUnderline(String camelStr) {
        if (org.apache.commons.lang.StringUtils.isEmpty(camelStr)) {
            return org.apache.commons.lang.StringUtils.EMPTY;
        }
        int len = camelStr.length();
        StringBuilder strb = new StringBuilder(len + len >> 1);
        for (int i = 0; i < len; i++) {
            char c = camelStr.charAt(i);
            if (Character.isUpperCase(c)) {
                strb.append(UNDERLINE_CHAR);
                strb.append(Character.toLowerCase(c));
            } else {
                strb.append(c);
            }
        }
        return strb.toString().toUpperCase();
    }
	/**
     * 将JSON对象中的数据封装到JavaBean中,带下划线的key
     *
     * @param jsonObject
     * @param classType
     * @param <T>
     * @return
     * @throws Exception
     * @Author xlq
     */
    public static <T> T jsonToEntity(JSONObject jsonObject, Class<T> classType) throws Exception {
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
        //采用反射机制创建对象
        T entity = classType.newInstance();
        //获取对象字节码信息,不要Object的属性
        BeanInfo beanInfo = Introspector.getBeanInfo(classType, Object.class);
        //获取entity对象中的所有属性
        PropertyDescriptor[] list = beanInfo.getPropertyDescriptors();
        Iterator keys = jsonObject.keys();
        while (keys.hasNext()) {
            String next = (String) keys.next();
            for (PropertyDescriptor pd : list) {
                //获取属性名
                String key = pd.getName();
                if (next.equalsIgnoreCase(key) || next.equalsIgnoreCase(camelUnderline(key)) || key.toLowerCase().equals(next.replace("_", "").toLowerCase())) {
                    //获取属性值
                    Class<?> propertyType = pd.getPropertyType();
                    if ("int".equals(propertyType.toString()) || "class java.lang.Integer".equals(propertyType.toString())) {
                        String string = jsonObject.getString(next);
                        if (!org.apache.commons.lang.StringUtils.isEmpty(string) && !"".equals(string)) {
                            Integer value = Integer.valueOf(string);
                            pd.getWriteMethod().invoke(entity, value);
                        }
                        break;
                    } else if ("class java.math.BigDecimal".equals(propertyType.toString())) {
                        String string = jsonObject.getString(next);
                        if (!org.apache.commons.lang.StringUtils.isEmpty(string) && !"".equals(string)) {
                            BigDecimal value = BigDecimal.valueOf(Double.parseDouble(string));
                            pd.getWriteMethod().invoke(entity, value);
                        }
                        break;
                    } else if ("class java.util.Date".equals(propertyType.toString())) {
                        String string = jsonObject.getString(next);
                        if (!org.apache.commons.lang.StringUtils.isEmpty(string) && !"".equals(string)) {
                            Date parse = sdf.parse(string);
                            pd.getWriteMethod().invoke(entity, parse);
                        }
                        break;
                    } else {
                        if (!"tmark".equalsIgnoreCase(next) && !"lg_lock".equalsIgnoreCase(next)) {
                            String value = jsonObject.getString(next);
                            pd.getWriteMethod().invoke(entity, value);
                            break;
                        }
                    }
                }
            }
        }
        return entity;
    }
Json转为类对象-JsonToEntity C#:此小程序实现将复杂的 json 格式数据转换为对应的实体类对象,对象与对象之间的关系采用了 ImplementFactory 组件提供的 Constraint 属性,可以在 Visual Studio 里使用 Nuget 搜索并引用该组件,该组件可实现ORM,当勾选'Use Constraint'后,可根据 Constraint 约束来实现懒加载数据。当然你也可以选择不采用 Constraint 属性建立约束,根据 json 数据生成纯实体类对象。 立即下载

相关推荐

博图编写温度程序_s7 smart200的CRC-16校验程序

最近做一个小项目,项目中采用485自由口通讯方式,使用一台西门子S7 smart200对一台冷水机做多个状态和温度做监控,并能对冷水机进行启停控制,和参数设置,因为冷水机的协议不是标准modbus格式,所以要自己编写通信协议。其中要用到CRC校验,在网上找了些别人写的程序,基本上用不了。只能自力更生了。首先,找到CRC校验的算法,并理解。 下面就是我找的算法(这个网上很多),1....

weixin_39539761的博客 3062

JSONObject转为实体类对象

注:JSON中的toJavaObject方法和JSONObject中的getObject方法支持深转换,可以转换实体对象;而JSON中的parseObject方法只能转换一层对象;

weixin_45729192的博客 4411

CAN 比特率和采样点计算

架构根据输入频率和比特率自动计算。

ldinvicible的专栏 787

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

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

君琴 的博客 1万+

FCN---训练cityspaces

未经允许,不要随意转载! 最近想试试用FCN训练自己的数据集,想想标注是一件很费劲的事,于是就想到了用其他库里的数据,这里选用了cityspaces,默认已经配置好FCN. 1、下载cityspaces https://www.cityscapes-dataset.com/ 需要注册一个账号 cityspaces包含2...

wangyu088的专栏 2030

2021.11.23 Covins 多机器人单目协同建图 跑Euroc数据集 更新

近日,一直在调试如何使用Covins跑通数据集,因为是初学者,所以很多bug出来的时候原理都不懂,只能复制——百度——尝试解决的过程。 现分享一下近日的结果以及与Covins作者帮助解答的一些问题。 使用代码行跑依次跑Euroc多数据集 这里的意思是使用作者提供的covins_examples文件夹中的euroc_examples_mh123_vigba.sh文件,这个文件是将三个Euroc数据集依次运行,跑完第一个数据集,第二个数据集运行的时候在第一个数据集生成地图的基础上继续绘制,由于我只下载了两个数据

qq_42614598的博客 2473

JSON转换:实体类和JSONObject互转,List和JSONArray互转(fastjson版)

1.实体类和JSONObject互转 //实体类转为JSONObject JSONObject jsonObject = JSONObject.parseObject(JSON.toJSONString(xtDmbm)); //JSONObject转为实体类 XtDmbm xtDmbm = JSONObject.toJavaObject(jsonObject, XtDmbm.class); 2.List<T>和JSONArray互转 //List转为JSONArray JSONArra

BellaShang的博客 2万+

citespace基本操作

聚类分析 时间线图 这些结果都是高被引文献的相关呈现结果,代表该领域的文献基础 下面可以看看该project的前沿领域 选择keywords 和term go! 调整显示方式 生成凸线图:表示 在某个研究领域或者时间段内 ,大家对某个领域或者某个词的关注度突然增高,凸显前沿方向的转变 以此来发现热点 ...

生信小博士的博客 1万+

Java 实体转Json Json转实体 String转Json Sting转JSONObject Sting转JSONArray

Java实体转Json Json转实体(json-lib-2.4-jdk15.jar) JDKjson 实体转Json JSONObject json = JSONObject.fromObject(std); 实体List转Json JSONArray jsonArray = JSONArray.fromObject(list); Json转实体 StdCost stdTemp = (StdCost)JSONObject.toBean(json, StdCost.class); Json转实体List .

tanzongbiao的专栏 2万+

AI智能体丨使用Coze一键生成爆款书单视频,3个月内获赞131.1w!(附保姆级教程)

这篇教程详细介绍了如何使用扣子(Coze)平台的AI智能工作流批量制作爆款书单视频。通过自动化流程,只需1-2分钟即可生成45-50秒的书单视频,效率提升近百倍。工作流包含文案生成、音频合成、图片素材获取、视频剪辑等全流程,支持随机生成8本书单、自动提取金句、智能配音等功能。教程提供了完整的操作步骤,包括剪映草稿配置、特效添加等细节,并附体验链接和示例效果。最终生成的视频包含书单展示、金句字幕、背景音乐等元素,适合书单号运营者快速批量产出内容。

李同学Lino的博客 2353

100天精通Python(基础篇)——第1天:Python从起源到应用的全面解析(附上Python、PyCharm、VSCode下载安装详细教程)

100天精通Python(基础篇)——第1天:Python从起源到应用的全面解析(附上Python、PyCharm、VSCode下载安装详细教程)

努力让自己发光,对的人才能迎着光而来 101万+

JSON字符串解析为对象(Map/JSONObject、实体类、数组/JSONArray)

使用fastjson,将字符串解析为对象。

程序员阿文 5831

obdumper和obloader迁移OceanBase业务库(一):实施手册

⭐️ 要求导出一致性数据时,建议在导出数据前,手动触发一次合并,在合并成功后再重新导出数据。:统计业务数据库下的所有业务对象清单(表/索引/分区/包/存储过程/同义词/序列/…:检查业务数据库下的所有业务对象清单(表/索引/分区/包/存储过程/同义词/序列/…:统计单个模式下所有业务对象清单(表/索引/分区/包/存储过程/同义词/序列/…如果单张表的数据量太大,会导出为多个文件,文件命名会加上数字后缀。该过程会导出所有表的定义、以及定义在表上的索引定义。如果有多种数据库对象,会导出到不同的子路径下。

Sebastien23的博客 1024

jsonobject java_JSONObject使用方法

转载:http://blog.youkuaiyun.com/dongzhouzhou/article/details/86645691.JSONObject介绍JSONObject-lib包是一个beans,collections,maps,java arrays和xml和JSON互相转换的包。2.下载jar包提供了除JSONObject的jar之外依赖的其他6个jar包,一共7个jar文件说明:因为工作中项...

weixin_29190573的博客 5504

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

JSONObject使用方法详解

1.JSONObject介绍 JSONObject-lib包是一个beans,collections,maps,java arrays和xml和JSON互相转换的包。 2.下载jar包 http://xiazai.jb51.net/201707/yuanma/lib_jb51.rar 提供了除JSONObject的jar之外依赖的其他6个jar包,一共7个jar文件

大啵鱼 4万+

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

JSONObject 使用方法详解

JSONObject-lib包是一个beans,collections,maps,java arrays和xml和JSON互相转换的包,本文给大家介绍jsonobject使用方法相关知识,感兴趣的朋友一起学习吧 1.JSONObject介绍 JSONObject-lib包是一个beans,collections,maps,java arrays和xml和JSON互相转换的包。 2.下载j

流年、你奈我何 6万+

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

JSONObject使用方法

1.JSONObject介绍JSONObject-lib包是一个beans,collections,maps,Javaarrays和xml和JSON互相转换的包。2.下载jar包http://files.cnblogs.com/java-pan/lib.rar提供了除JSONObject的jar之外依赖的其他6个jar包,一共7个jar文件说明:因为工作中项目用到的版本是1.1的对应jdk1.3的...

Newstar优快云的博客 3504

List<java.util.LinkedHashMap> 转普通实体List

问题:List的值对象类型为LinkedHashMap。需要转为我们能使用的实体对象。 public static <T> List<T> linkedMapTypeListToObjectList(List<T> lst,Class<T> responseType){ // 处理linkedHashMap lst = JSONObject.parseArray(JSONObject.toJSONString(lst)).toJavaList(

weixin_47397751的博客 4338

java object jsonobject_JSONObject简介

本节摘要:之前对JSON做了一次简单的介绍,并把JSON和XML做了一个简单的比较;那么,我就在想,如果是一个json格式的字符串传到后台,需要怎么对其处理?如果前台页面需要后台返回的是一个json的字符串,那么后台是怎么把json格式的字符串给拼装起来的呢?JSON和XML是不是有某种联系,他们之间是不是可以互相转换?……带着这些问题,搜索了相关的资料,并自己实际动手操作,总算对这些问题有了个比...

weixin_40007668的博客 695

Map<String,Object>转为JSONObject ,JSONObject 转为JsonObject,JsonObject转为JsonElement

package com.tianjian.property.jieshuns.service; import java.util.Map; import java.util.Properties; import org.apache.http.HttpStatus; import org.apache.http.client.methods.CloseableHttpRes

飞火龙在天的博客 1万+

利用Java反射实现普通对象到JSONObject的转换

1、json-lib是一个java类库,提供将Java对象,包括beans, maps, collections, java arrays and XML等转换成JSON,或者反向转换的功能。 2、json-lib 主页:http://json-lib.sourceforge.net/ 3、需要以下类库支持 •commons-lang 2.5 •commons-beanutils 1.8.

Zhouyangchao的专栏 2990

com.alibaba.fastjson.JSONObject转换

com.alibaba.fastjson转换 1.实体转String转json User user = new User(); user.age(18); user,name("张三"); //实体转String String json = JSON.toJSONString(result); //String跨项目传参的时候会出现/,JSONObject则能避免此类问题 //String转JSO...

Know Destiny的博客 667

JSONObject和JSONArray使用方式

一、JSONObject和JSONArray的数据形式 JSON、JSONObject、JSONArray都是FastJson框架中的东西,JSON协议使用方便,越来越流行,JSON的处理器有很多,这里先介绍一下FastJson,FastJson是阿里的开源框架,被不少企业使用,是一个极其优秀的Json框架。 JSON、JSONObject、JSONArray、javabean关系的解析: 首先J...

qq_40836790的博客 513
上一篇: springboot项目将日志输出保存至本地
下一篇: 调取接口获取流,将其转换为文件
~~Whd
博客等级 码龄7年 2粉丝 18原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

~~Whd

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值