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

  1. java编程 队列_5.1、顺序队列(java实现)

    public classSeqQueue {private final int MaxSize = 8;private int rear; //队尾指针 private int front; //队头 ...

  2. java 自定义注解 生成json_Jackson 通过自定义注解来控制json key的格式

    最近我这边有一个需求就是需要把Bean中的某一些特殊字段的值进行替换.而这个替换过程是需要依赖一个第三方的dubbo服务的.为了使得这个转换功能更加的通用,我们采用了下面的方式: client端使用自 ...

  3. Gson按指定字段顺序序列化

    需要输入的实体示例如下: /*** 云打印请求参数*/ @Data public class YiRuiPrintResParam extends YiRuiCommonResParam implem ...

  4. java注解判断字段是否存在_使用注解和反射判断指定的字段不能为空

    我们在写项目的时候,如何类比较少.判别指定对象的属性值是否为空,那确实可以,但是随着类的增多,判别对象的属性是否为空就非常的繁琐,所以可以使用自定义注解和反射来判定指定的字段是否为空. 第一步:创建一 ...

  5. java编程顺序,Java种的完整构造执行顺序(转)

    Java类的完整构造执行顺序(转) 转自:http://hi.baidu.com/zhengguobest/blog/item/09a97f0e0eba7dca7bcbe1b1.html 如果父类有静 ...

  6. mysql添加字段指定顺序_mysql 添加字段、删除字段、调整字段顺序

    添加字段: alter table `user_movement_log` Add column GatewayId int  not null default 0 AFTER `Regionid` ...

  7. Java 编程技巧之数据结构

    Photo @markusspiske 文 | 常意 导读 唐宋八大家之一欧阳修在<卖油翁>中写道: 翁取一葫芦置于地,以钱覆其口,徐以杓酌油沥之,自钱孔入,而钱不湿.因曰:"我 ...

  8. 谷歌 Java 编程风格指南

    点击上方蓝色"程序猿DD",选择"设为星标" 回复"资源"获取独家整理的学习资料! 来源 | http://hawstein.com/201 ...

  9. Google JAVA编程风格

    目录 前言 源文件基础 源文件结构 格式 命名约定 编程实践 Javadoc 后记 前言 这份文档是Google Java编程风格规范的完整定义.当且仅当一个Java源文件符合此文档中的规则, 我们才 ...

  10. Java 编程的动态性 第1 部分: 类和类装入--转载

    原文地址:http://www.ibm.com/developerworks/cn/java/j-dyn0429/ 本文是这个新系列文章的第一篇,该系列文章将讨论我称之为 Java 编程的动态性的一系 ...

最新文章

  1. 一个ThreadLocal和面试官大战30个回合
  2. php点击按钮后弹窗,如何在静态页添加按钮,点击时弹出功能界面
  3. ili9341屏幕在断电一段时间后首次上电白屏问题
  4. load方法引入本地html报错,分享基于plus.downloader的图片懒加载功能,支持本地缓存v1.1.0...
  5. Java 常用负载均衡算法解析
  6. 前端面试汇总(Bootstrap框架)
  7. springboot和ssm的区别
  8. J2EE部署项目至Tomcat报错 Unable to read TLD META-INF/c tld
  9. 技术思辨:GCN和CNN到底有什么差别?
  10. 基于GMT绘制行政区划图
  11. 华硕服务器主板那个系列好,华硕主板型号性价比排行 华硕主板那个性价最好用...
  12. VC6.0多行注释快捷键的设置
  13. ZT华尔街日报:中国楼市泡沫的破灭预言 暴跌70%
  14. Forth语言简明教程
  15. 商户/服务商微信支付开发文档【 直连模式/服务商模式】如何在公众号、小程序中接入微信支付?
  16. 后台页面设置页面弹出
  17. 【chromeEdge不兼容openModalDialog弹出模态窗口window.showModalDialog解决办法】
  18. 用故事解析setTimeout和setInterval(内含js单线程和任务队列)
  19. 机器学习笔试精选 100 题
  20. 评价模型-TOPSIS法

热门文章

  1. 移动端web自适应解决方案: adaptive.js
  2. 理解ThreadLocal(一)
  3. 【NodeJS 学习笔记03】先运行起来再说
  4. 回溯____蓝桥 棋盘
  5. CentOS 6 系统优化检测脚本
  6. Shell账户管理,用户和组管理
  7. 注册表系列之恶作剧之吻
  8. 50款漂亮的免费网页PSD模板下载(第三季)
  9. 3.2 Zabbix企业级分布式监控系统 --- zabbix-agent, zabbix-get 安装
  10. 43.访问控制过滤器(Access Control Filter)