背景
有些情况下在JSON字符串转为Json对象的时候,我们希望不破坏掉原有的数据顺序结构,这个应该如何处理?
我们都知道JSON对象一般都是以key : value 的形式存储,类似于java中的Map,hashMap 在结构上 是数组加链表,进行哈希取模的时候无法保证顺序,而LinkedHashMap 是可以保证顺序的,那么在Json对象中 是否有这样的结构呢?确实是有的,接下来我们继续看一下
这里我们以国内比较著名的FastJson 来做例子:
我们这里可以看到,在JsonObject 中作为数据存储的map 根据条件会在 HashMap 和 LinkedHashMap中实例化一个对象。那么说明我们确实可以将String类型的转为有序的Key : Value 结构,那么我们应该如何使用的?
一般来说,我们使用JSON 一般都只是转为JSON对象,并没有要求,所以一般是使用下面方法
JSONObject jsonObject = JSON.parseObject(json);
但是我们现在要有序,应该如何使用?
只需要加入一个Feature 标志就行
JSONObject jsonObject = JSON.parseObject(json, Feature.OrderedField);
当然Feature 枚举类中还有很多其他的一些选项,可以自己去查看。