学习笔记 利用反射 手写一个简单的实体类 转json 的方法
不得不说 反射真的是个好动
# 贴上我的代码
package com.lengff.test;import java.lang.reflect.Field;
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;public class toJsonUtil {public static void main(String[] args) {Person test = new Person("test", 123);String json = toJSONString(test);System.out.println(json);}/*** 将实体类转成json 字符串** @param bean* @return*/public static String toJSONString(Object bean) {Class<?> clazz = bean.getClass();//获取所有字段名Field[] fields = clazz.getDeclaredFields();String json = "";if (fields.length > 0) {json += "{";int size = 0;for (Field field : fields) {size++;String name = field.getName();Method method = null;Object invoke = null;try {//根据字段名首字母大写 拼接获取方法method = clazz.getMethod("get" + name.substring(0, 1).toUpperCase() + name.substring(1), null);//执行get 方法 获取字段对应的值invoke = method.invoke(bean, null);} catch (NoSuchMethodException e) {e.printStackTrace();} catch (IllegalAccessException e) {e.printStackTrace();} catch (InvocationTargetException e) {e.printStackTrace();}//拼接成json 格式的字符串if (size < fields.length) {json += "'" + name + "':'" + invoke.toString() + "',";} else {json += "'" + name + "':'" + invoke.toString() + "'";}}json += "}";}return json;}}/*** 实体 bean*/
class Person {String name;int age;public Person(String name, int age) {this.name = name;this.age = age;}public String getName() {return name;}public void setName(String name) {this.name = name;}public int getAge() {return age;}public void setAge(int age) {this.age = age;}
}
#原理:
就是利用反射,根据获取实体类里面的所有字段名,再根据字段名获取该字段名的get 方法,从而执行get 方法 ,拿到字段里的值,再用字符串拼接形成我们需要的json格式字符串
#说明:
由于写的很简单,适用的场景很低,只能适用一般的实体类,稍微高级一点的估计都不行,就只是一个学习的笔记,更好的去理解和学习反射
学习笔记 利用反射 手写一个简单的实体类 转json 的方法相关推荐
- 手写一个简单的IOC容器
手写一个简单的IOC容器 原文 http://localhost:4000/2020/02/25/SSM/spring/%E6%89%8B%E5%86%99%E4%B8%80%E4%B8%AA%E5% ...
- Tensorflow 学习笔记:Mnist 手写训练集调试,准确率变为0.1的解决办法及如何将准确率调高到98%以上
学习笔记:Mnist 手写训练集 加入隐藏层后准确率变为0.1的解决办法 提高神经网络准确率的尝试 提高准确率:调小每次训练的批次大小 提高准确率:使用交叉熵 更改优化器及学习率 小结 提高神经网络准 ...
- jquery手写轮播图_用jQuery如何手写一个简单的轮播图?(附代码)
用jQuery如何手写一个简单的轮播图?下面本篇文章通过代码示例来给大家介绍一下.有一定的参考价值,有需要的朋友可以参考一下,希望对大家有所帮助. 用 jQuery 手写轮播图 先上个效果截图: 主要 ...
- 怎么手写一个简单的List集合
List集合 手写一个简单的List集合为自己调用并不是特别难,只需要定义一个集合接口去提供所有方法的定义如下代码 : package com.myself.util; /*** * @author ...
- 【theano-windows】学习笔记九——softmax手写数字分类
前言 上一篇博客折腾了数据集的预备知识, 接下来按照官方的Deep learning 0.1 documentation一步步走, 先折腾softmax, 关于softmax和logistic回归分类 ...
- 手写一个简单的分页器
封装分页器 1. 前言 分页器基本上是任何网站必须要有的一个组件,为什么需要分页器,当后台传入了大量的数据,那么在前端拿到数据,如果直接展示很有可能或造成卡顿,同时消耗过多的内存,给用户带来的浏览效果 ...
- C#利用反射将Datatable转化为指定实体类ListT
背景介绍 在软件开发中肯定免不了和数据库打交道,我们对数据的增删改查最终会转化为SQL在数据库中执行.从SQLServer中查出数据一般有两种方式:一是ADO.NET直接写SQL语句从数据中查出数据, ...
- 深度学习笔记:Tensorflow手写mnist数字识别
文章出处:深度学习笔记11:利用numpy搭建一个卷积神经网络 免费视频课程:Hellobi Live | 从数据分析师到机器学习(深度学习)工程师的进阶之路 上一讲笔者和大家一起学习了如何使用 Te ...
- 深度学习笔记(MNIST手写识别)
先看了点花书,后来觉得有点枯燥去看了b站up主六二大人的pytorch深度学习实践的课,对深度学习的理解更深刻一点,顺便做点笔记,记录一些我认为重要的东西,便于以后查阅. 一. 机器学习基础 学习的定 ...
- 手写一个简单的HashMap,搞定挑剔面试官
作者:编程十二 链接:https://www.jianshu.com/p/1be0e957baf2 前言 今天去面试啊,聊得差不多的时候面试官突然问我会手写HashMap吗?这我哪能怂啊,好死不死的面 ...
最新文章
- 稳压源GWINSTEKGPD3303系列控制软件
- java的编译和连接方法_Java:编译时解析和“最具体的方法”
- 求求你!不要在网上乱拷贝代码了!一段网上找的代码突然炸了,项目出现大BUG...
- ASP.NET Core微服务(七)——【docker部署linux上线】(RDS+API接口测试部分)
- hashmap应用场景_Redis 5种数据结构 及使用场景分析
- Java / Web项目中的NPM模块Browser-Sync
- 为什么面试总喜欢考算法题?
- ad中装配图如何导出_如何把endnote中的research note和title等一起导出成表格或者txt?...
- java堆排序图解_108-堆排序的思路图解_清华毕业老程序员亲授通俗易懂的Java数据结构和算法​​​​教程_Java视频-51CTO学院...
- Framework4.5,vs下系统自动生成的C++ win32应用程序的详细解释
- 开源项目smartImageView
- Java 中status意思_struts2中iterator里属性status=stat什么意思
- Linux 闹钟(alarm)
- Python数据结构与算法题目 打印二叉树的左视图 打印二叉树的右视图 树的左视图 树的右视图
- B轮融资1450万美金的Ayla,在中国可行么?
- 这13个GIS开源软件,你了解吗?
- 有什么免费照片换发型软件?推荐几个换发型软件给你
- picasso加载图片
- 小米电视html插口,小米电视3有什么接口?小米电视3有HDMI接口吗?
- audio标签播放音频二进制文件
热门文章
- linux子进程知道父进程退出的解决方案
- (黑马教程)-webpack学习笔记
- 对 数组[i].index=i的理解
- linux安装雅黑字体,在CentOS系统中安装雅黑字体
- multipartfile获取文件路径_已知路径,通用获取文件名、后缀、类型
- c# 调用jtts_Java与C#开发上的一些差异与转换方法
- apache如何加载系统环境变量_游学电子:windows10系统如何用cmd指令设置环境变量...
- linux图形界面漏洞,ManageEngine DesktopCentral任意文件上传漏洞(CVE-2014-5007)
- oracle设置memory_target,oracle初始化参数之memory_target
- Java学习笔记——多线程