JSON序列化后按对象中声明顺序序列化或者指定顺序序列化(Java)
JSON序列化后按对象中声明顺序序列化或者指定顺序序列化
阿里巴巴的fastjson对json字符串进行序列化,序列化之后发现顺序发生了改变按照字母顺序系列化,导致之后业务出现问题。
解决方法1:
LinkedHashMap<String, Object> json = JSON.parseObject(message,LinkedHashMap.class, Feature.OrderedField);
JSONObject jsonObject=new JSONObject(true);
jsonObject.putAll(json);
先将字符串转化为LinkedHashMap,然后定义有序的json对象,将map对象复制到json对象中即可。
解决方法2:
JSONObject.toJSONString(JSONObject.parseObject(JSONObject.toJSONString(message, SerializerFeature.SortField)),SerializerFeature.SortField);
解决方法3:
定义的Java类上加上注解,同时指明字段的顺序
@JSONType(orders = { "busiCode", "message"})
// 示例:通过在实体类添加 @JSONType(orders={"name","age","gender","height","weight"})
@JSONType(orders={"name","age","gender","height","weight"})
public class Person {private String name;private Integer age;private String gender;private Double height;private Double weight;
}
// 示例:在属性上添加 @JSONField(ordinal = 1)
public class Person {@JSONField(ordinal = 1)private String name;@JSONField(ordinal = 2)private Integer age;@JSONField(ordinal = 3)private String gender;@JSONField(ordinal = 4)private Double height;@JSONField(ordinal = 5)private Double weight;
}
注意:
@JSONType与Serializable同时存在,jsontype的orders属性不起作用 to @JSONType中order未指明的字段,必须用@JSONField(serialize=false)修饰,否则排序无效
解决方法4:
在类中的每个字段上加上JSONField注解,顺序在前的ordinal的值小。
@JSONField(ordinal = 1)
JSON序列化后按对象中声明顺序序列化或者指定顺序序列化(Java)相关推荐
- 如何将对象中的内容按照一定的顺序进行排序
1.比较comparable和comparator,选择正确的方法进行排序 Comparable:强行对实现它的每个类的对象进行整体排序.这种排序被称为类的自然排序,类的compareTo方法被称为它 ...
- 将JSON对象中的某个字段进行分组和排序(java实现)
现在有这样一个数据 { "systemid": "123", "productid": "123", "dat ...
- Windows服务安装、卸载方法,卸载后在服务列表中仍显示问题,指定的服务已经标记为删除
最近在做一个JMS订阅消息的功能,本来用的WebService,部署到iis上创建连接订阅消息 后来经常出现连接中断的问题,服务端要求客户端要有连接异常自动重连的功能,后来发现用WebService重 ...
- JavaScript如何声明对象、函数以及对象中的函数(即方法)
目录 声明对象的2种最常见方法 声明函数的2种最常见方法 在对象中声明函数 声明对象的2种最常见方法 1) var Zhihuijun = {name:'彭志辉',age:28,upName:'稚晖君 ...
- java中序列化与反序列化_Java中的序列化
java中序列化与反序列化 Java提供了一种称为序列化的机制,以按字节的有序或字节序列的形式持久化Java对象,其中包括对象的数据以及有关对象的类型和存储在对象中的数据类型的信息. 因此,如果我们已 ...
- JAVA中常用接口的介绍及使用示例 java lang Comparable
分享一下我老师大神的人工智能教程!零基础,通俗易懂!http://blog.csdn.net/jiangjunshow 也欢迎大家转载本篇文章.分享知识,造福人民,实现我们中华民族伟大复兴! JAVA ...
- mysql实现按照自定义(指定顺序)排序
mysql按照指定顺序排序(自定义排序) 一.mysql中实现指定排序需求 二.解决方案 1:自定义排序实现 01. case when 转换实现自定义排序: 02:mysql排序函数filed 实现 ...
- js文件中声明的一个json对象, 在另一个js文件中可以直接使用。
1. 如在 AAA.js 文件中声明一个json对象. var world_geo_json = {"type":"FeatureCollection",&qu ...
- uni-app微信小程序uni.getLocation获取位置;authorize scope.userLocation需要在app.json中声明permission;小程序用户拒绝授权后重新授权
需求:点击按钮获取当前微信位置,以及点击拒绝授权后,下次点击还可以拉起授权窗口: 拒绝授权后重新拉起授权操作: 直接授权操作: 一.问题1:报authorize scope.userLocation需 ...
最新文章
- HTML5学习笔记二 HTML基础
- 如何自学python爬虫-零基础入门Python爬虫不知道怎么学?这是入门的完整教程
- 2012百度实习生招聘面试题
- servlce与filter的url-pattern介绍
- php设计模式之——建造者模式
- Android之layout属性介绍
- STM32F103高级定时器使用
- #CSP 201912-2 回收站选址(C语言)(100分)
- OSG仿真案例(5)——模型的平移、缩放、旋转
- DNF装备强化的算法分析与实现
- FastStone Capture 7.7 截图工具下载地址及使用
- 计算机桌面运维问题分类,桌面运维工程师常见面试问题汇总
- python 三国演义人物出场词频统计
- 解决Maven下载速度缓慢问题
- 微商城系统之商家平台任务自动分析处理系统_OctShop
- 最小生成树(克鲁斯卡尔算法 普里姆算法)
- 湖北农商行计算机类笔试题,2019年湖北农商行笔试入门汇总提前知~
- 树莓派连接不上WIFi,VNC失效,SSH失效
- textarea输入框实时 统计字数(可统计中文,英文字数)
- php 中日期时间函数大全,PHP 中日期时间函数 date() 用法总结