关于fastjson解析后的属性排序问题解决方案

问题起因:

1
JSONObject jsonObject = JSON.parseObject(jsonString);

上述方法得到的jsonObject属性是无序的,并不是按照json字符串原来的属性顺序。
解决方案:
通过设置Feature.OrderedField参数即可解决无序问题。注意,Feature.OrderedField参数只能在fastjson 1.2.3或以上版本才能使用。

1
JSONObject jsonObject = JSON.parseObject(resultString,Feature.OrderedField);

扩展:

1
2
3
4
5
6
7
// 属性不排序
JSON.toJSONString(obj, SerializerFeature.WRITE_MAP_NULL_FEATURES)
// 属性排序
JSON.toJSONString(obj, SerializerFeature.SortField)
//其他解决方案
用较高的fastjson版本,指定new JSONObject(true)即可
如果是用于验签类的操作,可JSON.parseObject(text, Feature.OrderedField); //注:Feature.OrderedField仅在1.2.3及上版本可用

参考文章

0%