不得不说 反射真的是个好动

# 贴上我的代码

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 的方法相关推荐

  1. 手写一个简单的IOC容器

    手写一个简单的IOC容器 原文 http://localhost:4000/2020/02/25/SSM/spring/%E6%89%8B%E5%86%99%E4%B8%80%E4%B8%AA%E5% ...

  2. Tensorflow 学习笔记:Mnist 手写训练集调试,准确率变为0.1的解决办法及如何将准确率调高到98%以上

    学习笔记:Mnist 手写训练集 加入隐藏层后准确率变为0.1的解决办法 提高神经网络准确率的尝试 提高准确率:调小每次训练的批次大小 提高准确率:使用交叉熵 更改优化器及学习率 小结 提高神经网络准 ...

  3. jquery手写轮播图_用jQuery如何手写一个简单的轮播图?(附代码)

    用jQuery如何手写一个简单的轮播图?下面本篇文章通过代码示例来给大家介绍一下.有一定的参考价值,有需要的朋友可以参考一下,希望对大家有所帮助. 用 jQuery 手写轮播图 先上个效果截图: 主要 ...

  4. 怎么手写一个简单的List集合

    List集合 手写一个简单的List集合为自己调用并不是特别难,只需要定义一个集合接口去提供所有方法的定义如下代码 : package com.myself.util; /*** * @author ...

  5. 【theano-windows】学习笔记九——softmax手写数字分类

    前言 上一篇博客折腾了数据集的预备知识, 接下来按照官方的Deep learning 0.1 documentation一步步走, 先折腾softmax, 关于softmax和logistic回归分类 ...

  6. 手写一个简单的分页器

    封装分页器 1. 前言 分页器基本上是任何网站必须要有的一个组件,为什么需要分页器,当后台传入了大量的数据,那么在前端拿到数据,如果直接展示很有可能或造成卡顿,同时消耗过多的内存,给用户带来的浏览效果 ...

  7. C#利用反射将Datatable转化为指定实体类ListT

    背景介绍 在软件开发中肯定免不了和数据库打交道,我们对数据的增删改查最终会转化为SQL在数据库中执行.从SQLServer中查出数据一般有两种方式:一是ADO.NET直接写SQL语句从数据中查出数据, ...

  8. 深度学习笔记:Tensorflow手写mnist数字识别

    文章出处:深度学习笔记11:利用numpy搭建一个卷积神经网络 免费视频课程:Hellobi Live | 从数据分析师到机器学习(深度学习)工程师的进阶之路 上一讲笔者和大家一起学习了如何使用 Te ...

  9. 深度学习笔记(MNIST手写识别)

    先看了点花书,后来觉得有点枯燥去看了b站up主六二大人的pytorch深度学习实践的课,对深度学习的理解更深刻一点,顺便做点笔记,记录一些我认为重要的东西,便于以后查阅. 一. 机器学习基础 学习的定 ...

  10. 手写一个简单的HashMap,搞定挑剔面试官

    作者:编程十二 链接:https://www.jianshu.com/p/1be0e957baf2 前言 今天去面试啊,聊得差不多的时候面试官突然问我会手写HashMap吗?这我哪能怂啊,好死不死的面 ...

最新文章

  1. 稳压源GWINSTEKGPD3303系列控制软件
  2. java的编译和连接方法_Java:编译时解析和“最具体的方法”
  3. 求求你!不要在网上乱拷贝代码了!一段网上找的代码突然炸了,项目出现大BUG...
  4. ASP.NET Core微服务(七)——【docker部署linux上线】(RDS+API接口测试部分)
  5. hashmap应用场景_Redis 5种数据结构 及使用场景分析
  6. Java / Web项目中的NPM模块Browser-Sync
  7. 为什么面试总喜欢考算法题?
  8. ad中装配图如何导出_如何把endnote中的research note和title等一起导出成表格或者txt?...
  9. java堆排序图解_108-堆排序的思路图解_清华毕业老程序员亲授通俗易懂的Java数据结构和算法​​​​教程_Java视频-51CTO学院...
  10. Framework4.5,vs下系统自动生成的C++ win32应用程序的详细解释
  11. 开源项目smartImageView
  12. Java 中status意思_struts2中iterator里属性status=stat什么意思
  13. Linux 闹钟(alarm)
  14. Python数据结构与算法题目 打印二叉树的左视图 打印二叉树的右视图 树的左视图 树的右视图
  15. B轮融资1450万美金的Ayla,在中国可行么?
  16. 这13个GIS开源软件,你了解吗?
  17. 有什么免费照片换发型软件?推荐几个换发型软件给你
  18. picasso加载图片
  19. 小米电视html插口,小米电视3有什么接口?小米电视3有HDMI接口吗?
  20. audio标签播放音频二进制文件

热门文章

  1. linux子进程知道父进程退出的解决方案
  2. (黑马教程)-webpack学习笔记
  3. 对 数组[i].index=i的理解
  4. linux安装雅黑字体,在CentOS系统中安装雅黑字体
  5. multipartfile获取文件路径_已知路径,通用获取文件名、后缀、类型
  6. c# 调用jtts_Java与C#开发上的一些差异与转换方法
  7. apache如何加载系统环境变量_游学电子:windows10系统如何用cmd指令设置环境变量...
  8. linux图形界面漏洞,ManageEngine DesktopCentral任意文件上传漏洞(CVE-2014-5007)
  9. oracle设置memory_target,oracle初始化参数之memory_target
  10. Java学习笔记——多线程