JavaBean属性名要求:前两个字母要么都大写,要么都小写

  1. package com.jdyh.worker.project.controller;
  2.  
  3. import com.alibaba.fastjson.JSON;
  4. import com.alibaba.fastjson.JSONObject;
  5. import lombok.Data;
  6.  
  7. import java.beans.BeanInfo;
  8. import java.beans.Introspector;
  9. import java.beans.PropertyDescriptor;
  10.  
  11. // https://www.cnblogs.com/threecc/archive/2011/09/05/2167667.html https://www.jb51.net/article/113074.htm
  12. //lombok 与 手动生成getter的区别
  13. public class dd3 {
  14.  
  15. public static void main(String[] args) throws Exception {
  16. // java基础之内省(Introspector)操作javabean属性的理解(主要用于开发框架): http://blog.sina.com.cn/s/blog_e3bab1310102v7k3.html
  17. BeanInfo beanInfo = Introspector.getBeanInfo(Person.class);
  18. PropertyDescriptor[] pds = beanInfo.getPropertyDescriptors();
  19. for (int i = 0; i < pds.length; i++) {
  20. System.out.println(pds[i].getName());
  21. }
  22. Person person = new Person();
  23. person.setAA("1");
  24. person.setBb("2");
  25. person.setCC("3");//lombok
  26. // person.setcC("3");//手动生成getter
  27. String d2 = toJsonStr(person);
  28. System.out.println("---20-->" + d2);
  29. JSONObject d3 = toJson(d2);
  30. System.out.println("---21-->" + d3);
  31. Person d4 = jsontoBean(d3);
  32. System.out.println("---22-->" + d4.toString());
  33.  
  34. }
  35.  
  36. public static String toJsonStr(Object object) {
  37. return JSON.toJSONString(object);
  38. }
  39.  
  40. public static JSONObject toJson(String str) {
  41. return JSON.parseObject(str);
  42. }
  43.  
  44. public static Person jsontoBean(JSON json) {
  45. return JSON.toJavaObject(json, Person.class);
  46. }
  47.  
  48. @Data
  49. static class Person {//这是一个JavaBean
  50. private String AA;
  51. private String Bb;
  52. private String cC;
  53.  
  54. public String getAA() {
  55. return AA;
  56. }
  57.  
  58. public void setAA(String aa) {
  59. AA = aa;
  60. }
  61.  
  62. public String getBb() {//decapitalize(Bb)会得出属性是bb,实际是Bb
  63. return Bb;
  64. }
  65.  
  66. public void setBb(String bb) {
  67. Bb = bb;
  68. }
  69.  
  70. public String getCC() {//decapitalize(CC)会得出属性是CC,实际是cC
  71. return cC;
  72. }
  73.  
  74. public void setCC(String cc) {
  75. cC = cc;
  76. }
  77.  
  78. }
  79. }

fastJson + lombok + 属性名命名 踩坑点的更多相关文章

  1. lombok踩坑与思考

    虽然接触到lombok已经有很长时间,但是大量使用lombok以减少代码编写还是在新团队编写新代码维护老代码中遇到的. 我个人并不主张使用lombok,其带来的代价足以抵消其便利,但是由于团队编码风格 ...

  2. 记录自己的踩坑第一天 | CSS:vertical-align 属性

    前言 最近老师让大家单独写前后端分离项目,真是大家卷完后端,一起去卷前端了.(我以前都是主要负责后端,处于只大致看的懂的级别,说多了都是泪啊). 真是处于一边学一边写的状态,基本就是每天早上看上两~三 ...

  3. Lombok好用是好用,就是容易踩坑,这份避坑指南请查收

    序言 各位好啊,我是会编程的蜗牛,作为java开发者,我们平常在开发过程中,总是希望能够尽量少敲代码.这一方面,当然是为了偷懒,另一方面,当然也是为了代码看起来更加简洁一点,不断往编程规范上靠.然后其 ...

  4. ibernate学习笔记5---实体类或属性名与数据库关键字冲突、hql命名参数、hql实现通用分页

    一.实体类或属性名与数据库关键字冲突问题1.实体类名与数据库中的关键字冲突比如:实体表User与oracle中的系统表冲突解决方式1:在xml中添加table属性,指定表名,使其不与name默认相等 ...

  5. swiper4自动轮播切换手动触碰后停止踩坑——属性disableOnInteraction

    swiper4轮播设置autoplay自动切换后,即默认设置: <script> var mySwiper = new Swiper('.swiper-container', { auto ...

  6. vue中书写JSX一些坑-特殊属性名

    举例说明, T1和T2引用Sub时, key2会出现在props以及data.attrs中, 而key则在data中 const Sub = ({data, props}) => { conso ...

  7. [jnhs]教训之jsp页面无法用jstl取值的坑.真他妈的奇葩,实体类的属性名不能用大写

    结果页面永远都是空 调试发现,数据正常的塞进去了 问题解决: https://zhidao.baidu.com/question/570584436.html 实体类的属性名,首字母不能大写,改成小写 ...

  8. 你真的了解字典(Dictionary)吗? C# Memory Cache 踩坑记录 .net 泛型 结构化CSS设计思维 WinForm POST上传与后台接收 高效实用的.NET开源项目 .net 笔试面试总结(3) .net 笔试面试总结(2) 依赖注入 C# RSA 加密 C#与Java AES 加密解密

    你真的了解字典(Dictionary)吗?   从一道亲身经历的面试题说起 半年前,我参加我现在所在公司的面试,面试官给了一道题,说有一个Y形的链表,知道起始节点,找出交叉节点.为了便于描述,我把上面 ...

  9. JavaScript 新手的踩坑日记

    引语 在1995年5月,Eich 大神在10天内就写出了第一个脚本语言的版本,JavaScript 的第一个代号是 Mocha,Marc Andreesen 起的这个名字.由于商标问题以及很多产品已经 ...

随机推荐

  1. git Windows终端安装教程

    1.下载网址:https://gitforwindows.org/ 2.双击压缩包出现: 3.点击下一步后,选择安装路径: 根据自己的需求选择路径 4.选择安装的组件,建议全选 [每一条解析:] Ad ...

  2. Maven中添加Jetty服务器配置

    <project> <!--其它配置--> <build> <plugins> <plugin> <groupId>org.mo ...

  3. process-hacker

    https://github.com/processhacker/processhacker#process-hacker // begin_phapppub typedef enum _PH_KNO ...

  4. 一、ARM

    1.1 ARM 分类 1.1.1 版本号分类 以前分类的是 ARM7,ARM9... ARM11,在 ARM11 之后,就是以 Cortex 系列分类了: Cortex-R:应用在实时系统上的系列 C ...

  5. 三栏布局的三个典型方法(圣杯、双飞翼、flex)

    聊聊三栏布局----左右定宽,中间自适应. 效果图: 圣杯布局 <!DOCTYPE html> <html> <head lang="en"> ...

  6. python 日期封装

    import time import datetime import locale class TimeUtil: def __init__(self, curtime=None): self.cur ...

  7. R语言 Keras Training Flags

    在需要经常进行调参的情况下,可以使用 Training Flags 来快速变换参数,比起直接修改模型参数来得快而且不易出错. https://tensorflow.rstudio.com/tools/ ...

  8. Mardown加上目录

    适合Jekyll+Github模式下post.html 中加入如下代码,会在页面加载时生成目录结构: 有两种方案: 方案一效果

  9. 【leetcode】1047. Remove All Adjacent Duplicates In String

    题目如下: Given a string S of lowercase letters, a duplicate removal consists of choosing two adjacent a ...

  10. 【leetcode】1029. Two City Scheduling

    题目如下: There are 2N people a company is planning to interview. The cost of flying the i-th person to ...