Java 保存时对json输入中的项目进行排序

Java 保存时对json输入中的项目进行排序,java,spring-boot,jackson,Java,Spring Boot,Jackson,我试图以特定的顺序保存json输入,在本例中,我希望按id排序。我怎样才能做到呢?另外,如果有人能提供一种更干净的方法来完成以下过程,我将不胜感激 DemoConfig-POJO 服务 DemoConfig demoConfig; JsonNode demoJson = demoConfig.getJson(); ObjectMapper mapper = new ObjectMapper(); for (JsonNode nodes : demoJson) {

我试图以特定的顺序保存json输入,在本例中,我希望按id排序。我怎样才能做到呢?另外,如果有人能提供一种更干净的方法来完成以下过程,我将不胜感激

DemoConfig-POJO

服务

DemoConfig demoConfig;
    JsonNode demoJson = demoConfig.getJson();
    ObjectMapper mapper = new ObjectMapper();
    for (JsonNode nodes : demoJson) {
        JsonNode id = nodes.path("id");
        JsonNode type = nodes.path("type");
        JsonNode order = nodes.path("order");
        JsonNode name = nodes.path("name");
        JsonNode children = nodes.path("children");

        ObjectNode node = mapper.createObjectNode();

        node.set("id", id);
        node.set("type", type);
        node.set("order", order);
        node.set("name", name);
        node.set("children", children);

        DemoConfig newDemoConfig = new DemoConfig();
        newDemoConfig.setDataJson(node);
        newDemoConfig.setId(id.asInt());
        newDemoConfig.setType(type.asInt());
        newDemoConfig.setOrder(type.asInt());
        newDemoConfig.setName(name.asText());

        demoRepository.save(newDemoConfig);

        if(children.isArray()) {
            for(JsonNode firstLevelChildren:children) {
                JsonNode id1 = nodes.path("id");
                JsonNode type1 = nodes.path("type");
                JsonNode order1 = nodes.path("order");
                JsonNode name1 = nodes.path("name");
                JsonNode children1 = nodes.path("children");

                ObjectNode node1 = mapper.createObjectNode();

                node.set("id", id1);
                node.set("type", type1);
                node.set("order", order1);
                node.set("name", name1);
                node.set("children", children1);

                DemoConfig newDemoConfig1 = new DemoConfig();
                newDemoConfig1.setDataJson(node1);
                newDemoConfig1.setId(id.asInt());
                newDemoConfig1.setType(type.asInt());
                newDemoConfig1.setOrder(type.asInt());
                newDemoConfig1.setName(name.asText());

                demoRepository.save(newDemoConfig1);

            }
        }
输入json

{
        "dataJson": [
            {
                "id": 1,
                "type": 546,
                "order": 1,
                "name": "demo1",
                "children": []
            },
            {
                "id": 2,
                "type": 842,
                "order": 2,
                "name": "demo2",
                "children": []
            },
            {
                "id": 3,
                "type": 985,
                "order": 3,
                "name": "demo4",
                "children": [
                    {
                        "id": 5,
                        "type": 354,
                        "order": 4,
                        "name": "demo3",
                        "children": []
                    }
                ]
            },
            {
                "id": 4,
                "type": 810,
                "order": 5,
                "name": "demo5",
                "children": []
            }
        ]
    }
在数据库中,它被保存为以下内容

pk_id   id  type  order name    
1000    1   546     1   demo1 
1001    2   842     2   demo2 
1002    3   985     3   demo3 
1003    5   354     4   demo5 
1004    4   810     5   demo4 
有什么我可以根据id保存的吗

pk_id   id  type  order name    
1000    1   546     1   demo1 
1001    2   842     2   demo2 
1002    3   985     3   demo3 
1003    4   810     5   demo4 
1004    5   354     4   demo5

是否要按Id排序?为什么不使用自定义比较器对列表中的
节点进行排序,该比较器将比较
pk\u Id
?您可以在序列化之前对其进行排序。@Sambit是的,按排序Id@ShashankKadne你能举个例子吗。因此,我必须从JsonNode转换到List,然后再转换回JsonNode?您想按Id排序吗?为什么不使用自定义比较器对列表中的
节点进行排序,该比较器将比较
pk_Id
?您可以在序列化之前对其进行排序。@Sambit是的,按排序Id@ShashankKadne你能举个例子吗。所以,我必须从JsonNode转换到List,然后再转换回JsonNode?