dpj0015 2016-03-31 06:46
浏览 51
已采纳

如何使用Golang在JSON响应中创建自定义键

I get a following json response through golang.

 [
    {
        "CreatedOn": "03-22-2015",
        "JSONReceived": [
            {
                "EzpOrderID": "ezp_126",
                "FirstName": "Kumar",
                "LastName": "S",
                "OrderDesc": "Sample"
            }
        ],
        "Status": "0",
        "id": "80acbdad-8aae-4d6c-ac63-2a02a9db64b4"
    },
    {
        "CreatedOn": "03-22-2015",
        "JSONReceived": [
            {
                "EzpOrderID": "ezp_126",
                "FirstName": "Vasanth",
                "LastName": "K",
                "OrderDesc": "Sample"
            }
        ],
        "Status": "0",
        "id": "8f7f52a5-793a-45bd-a9b7-ed41495e0ee3"
    }
]..

But i need to create with key in response. sample response as follows. How to achieve using golang programming.

 {
    "returnResponseData": [{
        "CreatedOn": "03-22-2015",
        "JSONReceived": [{
            "EzpOrderID": "ezp_126",
            "FirstName": "Kumar",
            "LastName": "S",
            "OrderDesc": "Sample"
        }],
        "Status": "0",
        "id": "80acbdad-8aae-4d6c-ac63-2a02a9db64b4"
    }, {
        "CreatedOn": "03-22-2015",
        "JSONReceived": [{
            "EzpOrderID": "ezp_126",
            "FirstName": "Vasanth",
            "LastName": "K",
            "OrderDesc": "Sample"
        }],
        "Status": "0",
        "id": "8f7f52a5-793a-45bd-a9b7-ed41495e0ee3"
    }]
}

Please help me to achieve this task using golang.

Whole Source code as follows:

 func orderList(w http.ResponseWriter, request *http.Request) {

    rows, err := r.Table("orders").Run(session)
    if err != nil {
        fmt.Println(err)
        return
    }

    var resultSet []interface{}

    err = rows.All(&resultSet)
    if err != nil {
        fmt.Printf("Error scanning database result: %s", err)
        return
    }

    if origin := request.Header.Get("Origin"); origin != "" {
        w.Header().Set("Access-Control-Allow-Origin", origin)
        w.Header().Set("Access-Control-Allow-Methods", "GET")
        w.Header().Set("Access-Control-Allow-Headers",
        "Accept, Content-Type, Content-Length, Accept-Encoding, X-CSRF-Token, Authorization")
    }


    w.Header().Set("Content-Type", "application/json")
    w.WriteHeader(200)            
    json.NewEncoder(w).Encode(resultSet)



}
  • 写回答

1条回答 默认 最新

  • douqin2108 2016-03-31 07:17
    关注

    You have to define another type like this:

    type Wrapper struct {
        ReturnResponseData []interface{} `json:"returnResponseData"`
    }
    

    and then encode wrapper, containing your response set:

    json.NewEncoder(w).Encode(&Wrapper{ReturnResponseData: resultSet})
    

    Notice, that you have to use property tag to achieve the name "returnResponseData", starting of a small letter (because encoder doesn't encode private properties by default).

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥15 为什么eprime输出的数据会有缺失?
  • ¥20 腾讯企业邮箱邮件可以恢复么
  • ¥15 有人知道怎么将自己的迁移策略布到edgecloudsim上使用吗?
  • ¥15 错误 LNK2001 无法解析的外部符号
  • ¥50 安装pyaudiokits失败
  • ¥15 计组这些题应该咋做呀
  • ¥60 更换迈创SOL6M4AE卡的时候,驱动要重新装才能使用,怎么解决?
  • ¥15 让node服务器有自动加载文件的功能
  • ¥15 jmeter脚本回放有的是对的有的是错的
  • ¥15 r语言蛋白组学相关问题