在开发过程中遇到一个问题,服务器经过排序返回后的字符串数据使用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();

 

注意:

使用Feature.OrderedField

JSON.parseObject("...", Feature.OrderedField);

1.1.41不支持JSON.parseObject("...", Feature.OrderedField);

已经升级为最新版本1.2.12了,该版本是可以不缺省排序的

 

举例:

需要解析的字符串为

{"stockAllNumVIS":[{"allNum":10,"stockId":"ANT_1408911271028232823020"}]}

进行解析的java代码

JSONObject jsonObject = JSONObject.parseObject(params);

解析之后

{"stockAllNumVIS":[{"stockId":"ANT_1408911271028232823020","allNum":10}]}

 


————————————————
版权声明:本文为CSDN博主「long2010110」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/long2010110/article/details/81537820