Api 分组响应数据

Api 分组响应数据,api,rest,go,grouping,response,Api,Rest,Go,Grouping,Response,我试图从我的数据库中获取数据,但当我显示并使其成为api响应时,我在根据productid对其进行分组时遇到了一些问题 我有基于golang创建的响应数据,如下所示: [ { "product_id": "1", "product_name": "Cardigan", "pitems&qu

我试图从我的数据库中获取数据,但当我显示并使其成为api响应时,我在根据productid对其进行分组时遇到了一些问题

我有基于golang创建的响应数据,如下所示:

[
            {
                "product_id": "1",
                "product_name": "Cardigan",
                "pitems": [
                    {
                        "id": "625ad1bc-66c5-440e-a527-d029d401ec2b",
                        "name": "Box",
                        "qty": 1
                    },
                    {
                        "id": "625ad1bc-66c6-440e-a527-d029d401ec2b",
                        "name": "test items1",
                        "qty": 1
                    },
                    {
                        "id": "625ad1bc-66c7-440e-a527-d029d401ec2b",
                        "name": "test items2",
                        "qty": 1
                    },
                    {
                        "id": "625ad1bc-66c8-440e-a527-d029d401ec2b",
                        "name": "test items3",
                        "qty": 1
                    }
                ]
            },
            {
                "product_id": "2",
                "product_name": "Polo",
                "product_sku": "P01",
                "items": [
                    {
                        "id": "625ad1bc-66c5-440e-a527-d029d401ec2b",
                        "name": "Box",
                        "qty": 1
                    },
                    {
                        "id": "625ad1bc-66c6-440e-a527-d029d401ec2b",
                        "name": "test items1",
                        "qty": 1
                    },
                    {
                        "id": "625ad1bc-66c7-440e-a527-d029d401ec2b",
                        "name": "test items2",
                        "qty": 1
                    },
                    {
                        "id": "625ad1bc-66c8-440e-a527-d029d401ec2b",
                        "name": "test items3",
                        "qty": 1
                    }
                ]
            }
        ]

 
func detail(id int)(result model.Struct) 
{  return result   }

func product()(result model.Struct_Result) {

 for data.Next() {  

 // call func detail   

 data.Scan(&id, &product)   

 detailResult := detail(id) 
   
 // then put together with struct and mix append ()

  outputLoop := model.Result{
  "product_id": id,
  "pitems": [
               {
                "id": detailResult.id,
                "name": detailResult.name,
                "qty": detailResult.qty
               },
            ]
  }

    result = append(result,outputLoop) 

  }
return result
 } 
但这不是我的预期结果,我的预期结果如下:

[
            {
                "product_id": "1",
                "product_name": "Cardigan",
                "pitems": [
                    {
                        "id": "625ad1bc-66c5-440e-a527-d029d401ec2b",
                        "name": "Box",
                        "qty": 1
                    },
                    {
                        "id": "625ad1bc-66c6-440e-a527-d029d401ec2b",
                        "name": "test items1",
                        "qty": 1
                    },
                    {
                        "id": "625ad1bc-66c7-440e-a527-d029d401ec2b",
                        "name": "test items2",
                        "qty": 1
                    }
                ]
            },
            {
                "product_id": "2",
                "product_name": "Polo",
                "product_sku": "P01",
                "items": [
                    {
                        "id": "625ad1bc-66c8-440e-a527-d029d401ec2b",
                        "name": "test items3",
                        "qty": 1
                    }
                ]
            }
        ]

有人能帮我解决问题吗?

显示详细数据意味着什么

简单的方法是:

创建2个函数,如下所示:

[
            {
                "product_id": "1",
                "product_name": "Cardigan",
                "pitems": [
                    {
                        "id": "625ad1bc-66c5-440e-a527-d029d401ec2b",
                        "name": "Box",
                        "qty": 1
                    },
                    {
                        "id": "625ad1bc-66c6-440e-a527-d029d401ec2b",
                        "name": "test items1",
                        "qty": 1
                    },
                    {
                        "id": "625ad1bc-66c7-440e-a527-d029d401ec2b",
                        "name": "test items2",
                        "qty": 1
                    },
                    {
                        "id": "625ad1bc-66c8-440e-a527-d029d401ec2b",
                        "name": "test items3",
                        "qty": 1
                    }
                ]
            },
            {
                "product_id": "2",
                "product_name": "Polo",
                "product_sku": "P01",
                "items": [
                    {
                        "id": "625ad1bc-66c5-440e-a527-d029d401ec2b",
                        "name": "Box",
                        "qty": 1
                    },
                    {
                        "id": "625ad1bc-66c6-440e-a527-d029d401ec2b",
                        "name": "test items1",
                        "qty": 1
                    },
                    {
                        "id": "625ad1bc-66c7-440e-a527-d029d401ec2b",
                        "name": "test items2",
                        "qty": 1
                    },
                    {
                        "id": "625ad1bc-66c8-440e-a527-d029d401ec2b",
                        "name": "test items3",
                        "qty": 1
                    }
                ]
            }
        ]

 
func detail(id int)(result model.Struct) 
{  return result   }

func product()(result model.Struct_Result) {

 for data.Next() {  

 // call func detail   

 data.Scan(&id, &product)   

 detailResult := detail(id) 
   
 // then put together with struct and mix append ()

  outputLoop := model.Result{
  "product_id": id,
  "pitems": [
               {
                "id": detailResult.id,
                "name": detailResult.name,
                "qty": detailResult.qty
               },
            ]
  }

    result = append(result,outputLoop) 

  }
return result
 }