Fastjson 序列化,反序列化Map对象排序问题(字符串转map,map转字符串)
背景
记录项目中遇到的
关于fastjson jsonobject转string乱序,string转jsonObject乱序问题的解决方案
fastJson issues
问题来源描述参见:
https://github.com/alibaba/fastjson/issues/359
https://github.com/alibaba/fastjson/issues/954 【最终解答】
单嵌套的Map序列化与反序列问题
JSONObject map=new JSONObject(true);//关键要设置为true,否则乱序
map.put("请假类型","1");
map.put("单据状态","2");
map.put("开始时间","3");
map.put("结束时间","4");
map.put("请假原因","5");
OkhttpUtils.println(map.toString());//封装的打印语句,不用理会
OkhttpUtils.println(map.toString());
//这条直接转的方案,会产生乱序问题!!!
//JSONObject root=JSON.parseObject(map.toString());
LinkedHashMap<String, Object> root=JSON.parseObject(map.toString(),new TypeReference<LinkedHashMap<String, Object>>(){} );//关键的地方,转化为有序map
OkhttpUtils.println(JSON.toJSONString(root));
//有了map对象,你就可以顺序打印,至于转不转JSONObject对象,看需求在定
// JSONObject json=new JSONObject(true);
// json.putAll(root);//存放map对象
Collection<Object> lists=root.values();
// Collection<Object> lists=json.values();//这种new JSONObject方案也可以
//打印
for (Object object : lists) {
OkhttpUtils.println(object.toString());
}
程序打印:
【第45行】:{"请假类型":"1","单据状态":"2","开始时间":"3","结束时间":"4","请假原因":"5"}
【第48行】:{"请假类型":"1","单据状态":"2","开始时间":"3","结束时间":"4","请假原因":"5"}
【第51行】:{"请假类型":"1","单据状态":"2","开始时间":"3","结束时间":"4","请假原因":"5"}
上述代码见实例程序:
组合的map json串,嵌套的map json串问题
类似这种形式:
{"Format":"json","Name":"wwqqzz","Para":{"myuser":333,"mynum":"222", "mylist":[11,55,"33"]},"Reserved":{},"Type":"request","Version":"1.0"}
Feature.OrderedField 解决嵌套多层map 的时候序列排序问题
LinkedHashMap<String, Object> rootStr=JSON.parseObject(mapStr.toString(),new TypeReference<LinkedHashMap<String, Object>>(){} ,Feature.OrderedField);
联系方式:
- github:https://github.com/Arisono
- QQ群:151909524
参考文献:
Fastjson 序列化,反序列化Map对象排序问题(字符串转map,map转字符串)的更多相关文章
- python: 序列化/反序列化及对象的深拷贝/浅拷贝
一.序列化/反序列化 python中内置了很多序列化/反序列化的方式,最常用的有json.pickle.marshal这三种,示例用法如下: import json import pickle imp ...
- 一个更好的C++序列化/反序列化库Kapok
KapokFAQ1.Kapok的特点简单,易用,header-only,只需要引用Kapok.hpp即可:高效,初步测试性和messagepack相当.它是纯c++11实现,因此需要支持C++11的编 ...
- 转载-------- JSON 与 对象 、集合 之间的转换 JSON字符串和java对象的互转【json-lib】
转载--*--*---- 在开发过程中,经常需要和别的系统交换数据,数据交换的格式有XML.JSON等,JSON作为一个轻量级的数据格式比xml效率要高,XML需要很多的标签,这无疑占据了网络流量,J ...
- javabean转换为map对象
在调用第三方接口发现对方使用map进行接收(不包括秘钥等),将bean类属性转换为map,直接贴代码: /** * JavaBean对象转化成Map对象 * * @param javaBean */p ...
- MessagePack Java 0.6.X List, Map 对象的序列化和反序列化
为了序列化原生的容器对象例如 List 和 Map 对象,你必须使用 Template. Template 对象是 serializer 和 deserializer 的配对.例如,为了序列化一个 ...
- fastjson序列化和反序列化报com.alibaba.fastjson.JSONException: autoType is not support异常问题,解决方案整合
1.问题起因 2017年3月15日,fastjson官方发布安全升级公告,该公告介绍fastjson在1.2.24及之前的版本存在代码执行漏洞,当恶意攻击者提交一个精心构造的序列化数据到服务端时,由于 ...
- FastJson序列化对象复杂时出错问题解决
FastJson序列化对象复杂时出错问题解决 针对复杂的对象,如Map<String, List<Map<String, XxxObject<A, B, C>>&g ...
- C#序列化及反序列化Json对象通用类JsonHelper
当今的程序界Json大行其道.因为Json对象具有简短高效等优势,广受广大C#码农喜爱.这里发一个序列化及反序列化Json对象通用类库,希望对大家有用. public class JsonHelper ...
- python_way ,day5 模块,模块3 ,双层装饰器,字符串格式化,生成器,递归,模块倒入,第三方模块倒入,序列化反序列化,日志处理
python_way.day5 1.模块3 time,datetime, json,pickle 2.双层装饰器 3.字符串格式化 4.生成器 5.递归 6.模块倒入 7.第三方模块倒入 8.序列化反 ...
随机推荐
- 很吊炸天的Xcode插件,你想要的这都有
整理自BigPolarBear的博客 .杂技杂记 以及CC此前整理. 古人云"工欲善其事必先利其器",打造一个强大的开发环境.是马上提升自身战斗力的绝佳途径!下面是搜集的一些有力 ...
- hadoop组件及其作用
1.hadoop有三个主要的核心组件:HDFS(分布式文件存储).MAPREDUCE(分布式的计算).YARN(资源调度),现在云计算包括大数据和虚拟化进行支撑. 在HADOOP(hdfs.MAPRE ...
- 1、移动端 2、后台 3、 移动端,Web 端 4、 PC端
移动端: 1.公众号:停开心 住总物业 2.app: iso Android 停开心,住总停开心 后台:停开心智慧停车管理平台(所有的停车场) 移动端,Web端: 海投OA,公司OA PC端:收费软 ...
- dataTable() 与 DataTable() 的差别与处理方式
jQuery dataTable的初始化有两种方式: var dataTable = $('#example').dataTable(); 与 var DataTable = $('#example' ...
- es6三点运算符的用法
扩展运算符( spread )是三个点(...).它好比 rest 参数的逆运算,将一个数组转为用逗号分隔的参数序列. console.log(...[1,2,3]); console.log(1,. ...
- POJ 1018 Communication System 贪心+枚举
看题传送门:http://poj.org/problem?id=1018 题目大意: 某公司要建立一套通信系统,该通信系统需要n种设备,而每种设备分别可以有m个厂家提供生产,而每个厂家生产的同种设备都 ...
- ArcGIS IQueryFilter接口
樱木 原文IQueryFilter 1.IQueryFilter::SubFields (1)默认值为“*”,即查询时返回整行数据,如果只需要某一个字段数据(比如“Country”字段),则可以指定 ...
- 使用 Google Guava 美化你的 Java 代码:1~4 【转】
文章转载自:http://my.oschina.net/leejun2005/blog/172328 1.使用Google Collections,Guava,static imports编写漂亮代码 ...
- dll = MinGW gcc 生成动态链接库 dll 的一些问题汇总
MinGW gcc 生成动态链接库 dll 的一些问题汇总 https://blog.csdn.net/liyuanbhu/article/details/42612365 网络上关于用 MinGW ...
- 【读书笔记与思考】Andrew 机器学习课程笔记
Andrew 机器学习课程笔记 完成 Andrew 的课程结束至今已有一段时间,课程介绍深入浅出,很好的解释了模型的基本原理以及应用.在我看来这是个很好的入门视频,他老人家现在又出了一门 deep l ...