JSONobject和JSONArray有序排序

文章讲述了在工作中使用动态代理拦截并修改接口数据时遇到的乱码问题,经排查发现是由于返回数据list中的Map顺序不固定。通过JSONObject的OrderedField特性,作者提供了将JSONArray按原顺序解析的方法,确保了前后数据的一致性。
摘要由CSDN通过智能技术生成

场景:工作时使用动态代理拦截接口数据,并修改数据,发现修改后的数据,在前端显示格式一直乱码?

结论:返回数据list里面包裹map,map里面四个属性abcd ,我修改数据后,发现map里面返回数据的顺序不一样,一开始认为前端是根据map里的key解析数据,后来经过排查发现是顺序的问题。

JSONObject

重点:JSONObject.parseObject(xxxx, Feature.OrderedField);

  String param_dataJsonbject_String = jsonObject.getString("data");
 JSONObject param_dataJsonbject_JSONObject = JSONObject.parseObject(param_dataJsonbject_String, Feature.OrderedField)

JSONArray


   String dataString = jsonObject.getString("data");
   JSONArray array = ParseArrayOrderly(dataString);
   
	/**
     * JSONArray有序排序
     */
    public static JSONArray ParseArrayOrderly(String jsonStr){
        //JSON 默认排序
        int defaultParserFeature = JSON.DEFAULT_PARSER_FEATURE;
        //设置Feature.OrderedField 按照字符串中的顺序排序
        JSON.DEFAULT_PARSER_FEATURE = Feature.config(JSON.DEFAULT_PARSER_FEATURE, Feature.OrderedField, true);
        JSONArray jsonArray = JSONArray.parseArray(jsonStr);
        //JSON.DEFAULT_PARSER_FEATURE设置为全局设置  不确定影响范围,使用完还原默认值
        JSON.DEFAULT_PARSER_FEATURE = defaultParserFeature;
        return jsonArray;
    }

使用如上方式可以保证 入参数据 跟修改之后数据 顺序一致!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

一路向楠i

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值