开发过程中遇到一个问题,服务器经过排序返回后的字符串数据使用fastjson解析后,数据顺序发生变化,引起业务异常。
解决办法:
1、解析时增加参数不调整顺序
JSONObject respondeBodyJson = JSONObject.parseObject(jsonStr, Feature.OrderedField);
2、初始化json对象为有序对象:
JSONObject retObj = new JSONObject(true);
这样生成的json对象就与放入数据时一致。
3、使用Gson解析
JsonObject returnData = new JsonParser().parse(replyString).getAsJsonObject();
使用阿里巴巴的fastjson对json字符串进行序列化,序列化之后发现顺序发生了改变,导致之后业务出现问题。
解决方法:
LinkedHashMap<String, Object> json = JSON.parseObject(message,LinkedHashMap.class, Feature.OrderedField); JSONObject jsonObject=new JSONObject(true); jsonObject.putAll(json);
先将字符串转化为LinkedHashMap,然后定义有序的json对象,将map对象复制到json对象中即可。