场景:工作时使用动态代理拦截接口数据,并修改数据,发现修改后的数据,在前端显示格式一直乱码?
结论:返回数据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;
}