Beego/Golang-向结构查询值

Beego/Golang-向结构查询值,go,beego,Go,Beego,我有一个使用Beego框架在Golang中构建的API,我有一个具有多个连接的查询,然后返回一个JSON结果 我希望有一种方法可以将每一行转换成一个具有更好的键名的结构,例如,而不是“Stage\uu Description”只是“Stage”,等等。。。所以我用我想要的键名构建了一个ResultMap结构,我应该创建一个映射吗 查询: type ResultMap struct { Id int DateAdded time.Time FirstName

我有一个使用Beego框架在Golang中构建的API,我有一个具有多个连接的查询,然后返回一个JSON结果

我希望有一种方法可以将每一行转换成一个具有更好的键名的结构,例如,而不是“Stage\uu Description”只是“Stage”,等等。。。所以我用我想要的键名构建了一个ResultMap结构,我应该创建一个映射吗

查询:

type ResultMap struct {
    Id        int
    DateAdded time.Time
    FirstName string
    LastName  string
    Username  string
    Stage     string
    station   string
    status    string
}

//var maps []ResultMap
var maps []orm.Params
num, err := o.QueryTable("test_result_detail").
    Filter("Result__Serial", "121994-0001").
    Values(&maps, "id", "date_added", "stage__description", "station__station", "status__status", "operator__username", "operator__first_name", "operator__last_name" )
JSON结果

[
  {
    "DateAdded": "2016-10-20T00:00:00-05:00",
    "Id": 8306105,
    "Operator__FirstName": "Jose",
    "Operator__LastName": "Mendez",
    "Operator__Username": "3362",
    "Stage__Description": "VR1 Test",
    "Station__Station": "TS0653",
    "Status__Status": "PASS"
  },
  {
    "DateAdded": "2016-10-20T00:00:00-05:00",
    "Id": 8306465,
    "Operator__FirstName": "Jose",
    "Operator__LastName": "Mendez",
    "Operator__Username": "3362",
    "Stage__Description": "QA Lab X-Ray Inspection",
    "Station__Station": "LABEQP-0004",
    "Status__Status": "PASS"
  },
  {
    "DateAdded": "2016-10-28T00:00:00-05:00",
    "Id": 8547267,
    "Operator__FirstName": "Jose",
    "Operator__LastName": "Mendez",
    "Operator__Username": "3362",
    "Stage__Description": "Capture Customer SN",
    "Station__Station": "N/A",
    "Status__Status": "PASS"
  },
  {
    "DateAdded": "2016-10-28T00:00:00-05:00",
    "Id": 8547851,
    "Operator__FirstName": "Jose",
    "Operator__LastName": "Mendez",
    "Operator__Username": "3362",
    "Stage__Description": "Final Test",
    "Station__Station": "TS0653",
    "Status__Status": "PASS"
  },
  {
    "DateAdded": "2017-02-14T00:00:00-06:00",
    "Id": 10993864,
    "Operator__FirstName": "Jose",
    "Operator__LastName": "Mendez",
    "Operator__Username": "3362",
    "Stage__Description": "QA Mechanical Final Inspection",
    "Station__Station": "VISUAL INSPECTION",
    "Status__Status": "PASS"
  }
]

您希望在结构上使用json注释,然后使用
json.Unmarshal
将数据放入结构中

以下是一个例子:

package main

import (
    "encoding/json"
    "fmt"
)

func main() {
    // The struct you want to store the data in
    // Note the json tags that show which json field corresponds to which struct field
    type Data struct {
        FirstName string `json:"Operator__FirstName"`
        LastName  string `json:"Operator__LastName"`
    }
    // Create a slice of these structs since our json is an array of results
    var structData []Data

    // The json you want to dump into the structs
    jsonData := []byte(`[{"Operator__FirstName": "Bob", "Operator__LastName": "Smith"},{"Operator__FirstName": "John", "Operator__LastName": "Adams"}]`)

    _ = json.Unmarshal(jsonData, &structData)

    fmt.Printf("%+v", structData)
}

这里是Go Playerd:

你能告诉我如何在上面的maps对象上迭代多个结果吗?我更新了上面的示例,以处理一个具有多个结果的json数组。基本上,您只需要创建一个结构切片,然后将其解组。