如何重新定位或重新排序 JSON object 中的键或 java 中的哈希映射

How to reposition or reorder the keys in JSON object or hash map in java

{
data:{},
firstNane:"",
id:"1,
lastName:"",
  children:[
    parent:"1",
    id:"11",
    name:"",
    firstName:"",
    lastName:"",
    chidlren:[..other nested children],
    data:{},
  ],
name:"",
}

上面是我的JSONobject,我想把key重新定位成下面的格式 id,name,firstName,lastName,data 和 children

有人可以让我知道我怎样才能像上面提到的那样重新定位键,这样我的最终输出将显示如下 ::-

这是 JSON object 还让我知道散列映射如何对元素进行排序。

{
    id:"1,
    name:"",
    firstNane:"",
    lastName:"",
    data:{},
      children:[
        id:"11",
        name:"",
        firstName:"",
        lastName:"",
        parent:"1",
        data:{},
        chidlren:[..other nested children],
      ],

}

您可以使用 LinkedHashMap 对元素进行排序。

LinkedHashMap returns 元素的添加方式与 HashMap 不同。

来自 JSON definition:

JSON is built on two structures:
A collection of name/value pairs. In various languages, this is realized as an object, record, struct, dictionary, hash table, keyed list, or associative array.
An ordered list of values. In most languages, this is realized as an array, vector, list, or sequence.

An object is an unordered set of name/value pairs.

同样,HashMap 也没有排序:此 class 不保证地图的顺序;特别是,它不保证顺序会随着时间的推移保持不变。

接下来,提交的JSON无效,需要更新。

但是,某些 JSON 库提供了对字段进行排序的工具,例如 Jackson 库中的 @JsonPropertyOrder 注释。

@JsonInclude(Include.NON_NULL)
@JsonPropertyOrder({ "id", "name", "firstName", "lastName", "parent", "data", "children" })
@Data
public class MyPojo {
    private Integer id;
    private String name;
    private String firstName;
    private String lastName;
    private Map<String, Object> data;
    private List<MyPojo> children;
    private Integer parent;
}

测试:

ObjectMapper mapper = new ObjectMapper();
MyPojo c1 = new MyPojo(11, "", "", "", new HashMap<>(), new ArrayList<>(), 1);
MyPojo mp = new MyPojo(1, "", "", "", new HashMap<>(), Arrays.asList(c1), null);

System.out.println(mapper.writerWithDefaultPrettyPrinter().writeValueAsString(mp));

输出:

{
  "id" : 1,
  "name" : "",
  "firstName" : "",
  "lastName" : "",
  "data" : { },
  "children" : [ {
    "id" : 11,
    "name" : "",
    "firstName" : "",
    "lastName" : "",
    "parent" : 1,
    "data" : { },
    "children" : [ ]
  } ]
}