Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/318.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java生成复杂的json响应_Java_Spring_Spring Boot_Graph - Fatal编程技术网

Java生成复杂的json响应

Java生成复杂的json响应,java,spring,spring-boot,graph,Java,Spring,Spring Boot,Graph,我正试图创建一个与此完全相同的json响应 { "clusters": [ { "id": "0-1511866753", "nodes": [ { "id": "node12", "label": "Symfony&qu

我正试图创建一个与此完全相同的json响应

{
"clusters": [
    {
        "id": "0-1511866753",
        "nodes": [
            {
                "id": "node12",
                "label": "Symfony",
                "clusterId": "0-1511866753"
            },
            {
                "id": "node2",
                "label": "Php",
                "clusterId": "0-1511866753"
            },
            {
                "id": "node1",
                "label": "Laravel",
                "clusterId": "0-1511866753"
            }
        ]
    }
]}
我取得了以下成就

{
    "clusters": [
        [
            {
                "id": "node1",
                "label": "Laravel",
                "partition": "1",
                "clusterId": "0-7179778"
            },
            {
                "id": "node2",
                "label": "Php",
                "partition": "1",
                "clusterId": "0-7179778"
            },
            {
                "id": "node12",
                "label": "Symfony",
                "partition": "1",
                "clusterId": "0-7179778"
            }
        ]
    ]
}
我用于生成响应的代码:

Map nodegroup=nodeList.stream().collect(Collectors.groupby(节点->节点.get(“分区”));
列表=新的ArrayList();
Map clusterNodes=new HashMap();
节点组forEach(
(键、值)->{
intb=(int)((Math.random()*9000000)+1000000);
字符串uuid=0+“-”+b;
//在每个节点上追加生成的clusterId
forEach(nodeValue->nodeValue.put(“clusterId”,uuid));
列表。添加(值);
}
);
clusterNodes.put(“集群”,列表);
回根节;

问题是我需要做什么来实现首选响应?

如前所述,将JSON结构建模为对象/DTO。它将被转换为你想要的。例如,此DTO的JSON输出:

public class ProductDTO {
    List<ProductBean> data = new ArrayList<>();
}

它使用Jackson将对象转换为JSON。

我想说的是,不要构建自己的JSON响应,而是用Java对其进行建模,然后用类似Jackson的东西将其序列化为JSON。我认为这将是一个更加java化的答案。(例如)
{
    "data": [
        {
            "type": "phone",
            "properties": "color:grön",
            "price": 277.00,
            "store_address": "Blake gränden, Karlskrona"
        }
    ]
}