Java编程:按照指定的字段顺序,将 Bean 转换为 Json
Json工具介绍
在 Java 语言中,常见的 Bean 转换为 Json 的 Jar 包有以下几类:
- fastjson-1.2.23.jar 【alibaba】【社区非常活跃】 地址:https://github.com/alibaba/fastjson
- gson-2.8.0.jar 【google】【社区非常活跃】 地址:https://github.com/google/gson
- jackson-core.jar 地址:http://jackson.codehaus.org
- json-lib-2.4 地址:http://www.mvnrepository.com/artifact/net.sf.json-lib/json-lib/2.4
我们的问题是:在使用以上工具的过程中,如何按照指定的字段顺序进行序列化?接下来以 fastjson 为例进行讲解。
解决方法
代码一:
public class User2 {private String name;private String age;private String sex;public String getName() {return name;}public void setName(String name) {this.name = name;}public String getAge() {return age;}public void setAge(String age) {this.age = age;}public String getSex() {return sex;}public void setSex(String sex) {this.sex = sex;}
}
默认生成 Json 字符串如下:
{"age":"18","name":"json","sex":"女"}
代码二:
import com.alibaba.fastjson.annotation.JSONField;public class User {@JSONField(ordinal=1)private String name;@JSONField(ordinal=2)private String age;@JSONField(ordinal=3)private String sex;public String getName() {return name;}public void setName(String name) {this.name = name;}public String getAge() {return age;}public void setAge(String age) {this.age = age;}public String getSex() {return sex;}public void setSex(String sex) {this.sex = sex;}
}
使用注解 @JSONField(ordinal=1)
字段排序设置,生成 Json 字符串如下:
{"name":"json","age":"18","sex":"女"}
其他工具大都具备类似的功能,以上仅供参考。
餐后甜点
代码三:
import com.alibaba.fastjson.annotation.JSONField;public class User {@JSONField(ordinal = 1)private String name;@JSONField(ordinal = 2, name = "nianling")private String age;@JSONField(ordinal = 3)private String sex;public String getName() {return name;}public void setName(String name) {this.name = name;}public String getAge() {return age;}public void setAge(String age) {this.age = age;}public String getSex() {return sex;}public void setSex(String sex) {this.sex = sex;}
}
生成 Json 字符串如下:
{"name":"json","nianling":"18","sex":"女"}
对比代码二生成的字符串,我们发现 age 变为 nianling 了,为什么会是这样的?
回看代码:
片段一:
@JSONField(ordinal = 2)
private String age;
片段二:
@JSONField(ordinal = 2, name = “nianling”)
private String age;
原来是 name 的作用。
Java编程:按照指定的字段顺序,将 Bean 转换为 Json相关推荐
- java编程 队列_5.1、顺序队列(java实现)
public classSeqQueue {private final int MaxSize = 8;private int rear; //队尾指针 private int front; //队头 ...
- java 自定义注解 生成json_Jackson 通过自定义注解来控制json key的格式
最近我这边有一个需求就是需要把Bean中的某一些特殊字段的值进行替换.而这个替换过程是需要依赖一个第三方的dubbo服务的.为了使得这个转换功能更加的通用,我们采用了下面的方式: client端使用自 ...
- Gson按指定字段顺序序列化
需要输入的实体示例如下: /*** 云打印请求参数*/ @Data public class YiRuiPrintResParam extends YiRuiCommonResParam implem ...
- java注解判断字段是否存在_使用注解和反射判断指定的字段不能为空
我们在写项目的时候,如何类比较少.判别指定对象的属性值是否为空,那确实可以,但是随着类的增多,判别对象的属性是否为空就非常的繁琐,所以可以使用自定义注解和反射来判定指定的字段是否为空. 第一步:创建一 ...
- java编程顺序,Java种的完整构造执行顺序(转)
Java类的完整构造执行顺序(转) 转自:http://hi.baidu.com/zhengguobest/blog/item/09a97f0e0eba7dca7bcbe1b1.html 如果父类有静 ...
- mysql添加字段指定顺序_mysql 添加字段、删除字段、调整字段顺序
添加字段: alter table `user_movement_log` Add column GatewayId int not null default 0 AFTER `Regionid` ...
- Java 编程技巧之数据结构
Photo @markusspiske 文 | 常意 导读 唐宋八大家之一欧阳修在<卖油翁>中写道: 翁取一葫芦置于地,以钱覆其口,徐以杓酌油沥之,自钱孔入,而钱不湿.因曰:"我 ...
- 谷歌 Java 编程风格指南
点击上方蓝色"程序猿DD",选择"设为星标" 回复"资源"获取独家整理的学习资料! 来源 | http://hawstein.com/201 ...
- Google JAVA编程风格
目录 前言 源文件基础 源文件结构 格式 命名约定 编程实践 Javadoc 后记 前言 这份文档是Google Java编程风格规范的完整定义.当且仅当一个Java源文件符合此文档中的规则, 我们才 ...
- Java 编程的动态性 第1 部分: 类和类装入--转载
原文地址:http://www.ibm.com/developerworks/cn/java/j-dyn0429/ 本文是这个新系列文章的第一篇,该系列文章将讨论我称之为 Java 编程的动态性的一系 ...
最新文章
- 一个ThreadLocal和面试官大战30个回合
- php点击按钮后弹窗,如何在静态页添加按钮,点击时弹出功能界面
- ili9341屏幕在断电一段时间后首次上电白屏问题
- load方法引入本地html报错,分享基于plus.downloader的图片懒加载功能,支持本地缓存v1.1.0...
- Java 常用负载均衡算法解析
- 前端面试汇总(Bootstrap框架)
- springboot和ssm的区别
- J2EE部署项目至Tomcat报错 Unable to read TLD META-INF/c tld
- 技术思辨:GCN和CNN到底有什么差别?
- 基于GMT绘制行政区划图
- 华硕服务器主板那个系列好,华硕主板型号性价比排行 华硕主板那个性价最好用...
- VC6.0多行注释快捷键的设置
- ZT华尔街日报:中国楼市泡沫的破灭预言 暴跌70%
- Forth语言简明教程
- 商户/服务商微信支付开发文档【 直连模式/服务商模式】如何在公众号、小程序中接入微信支付?
- 后台页面设置页面弹出
- 【chromeEdge不兼容openModalDialog弹出模态窗口window.showModalDialog解决办法】
- 用故事解析setTimeout和setInterval(内含js单线程和任务队列)
- 机器学习笔试精选 100 题
- 评价模型-TOPSIS法